2014-01-04 6 views
3

Я продолжаю возиться с этим - как мне высмеять модель, которая расширяет форму Eloquent в Laravel 4 для моего модульного теста?Как насмехаться с laravel eloquent model

я получаю следующее сообщение об ошибке ж/мой текущий путь

ErrorException: Trying to get property of non-object

Пример

use \Repository\Text\EloquentText; 
use \Faker\Factory as Faker; 

class EloquentTextTest extends TestCase { 

public function setUp() 
{ 
    parent::setUp(); 

    $stub = $this->getMock('Text'); 
    $stub->expects($this->any())->method('save'); 

    $this->_fixture = new EloquentText($stub); 
} 

/** 
* @test 
*/ 
public function createShouldCreateNewTextEntry() 
{ 
    $faker = Faker::Create(); 
    $data = [ 
     'title' => $faker->sentence, 
     'content' => $faker->text, 
     'level_id' => $faker->randomDigit, 
     'is_public' => $faker->numberBetween(0, 1), 
     'is_visible' => $faker->numberBetween(0, 1), 
    ]; 

    $text = $this->_fixture->create($data); 

    $this->assertEquals($data['title'], $text->title); 
    $this->assertEquals($data['content'], $text->content); 
    $this->assertEquals($data['level_id'], $text->level_id); 
    $this->assertEquals($data['is_public'], $text->is_public); 
    $this->assertEquals($data['is_visible'], $text->is_visible); 

    return $text; 
} 
+2

Что вы точно тестируете? Если вы хотите убедиться, что контент действительно сохранен, вы можете вообще не высмеять Eloquent (возможно, захотите использовать другой адаптер DB, например, в sqlite для проверки в памяти). Если вы издеваетесь над Eloquent, тогда вы можете просто проверить, что вы вызвали этот метод, что не является полезным тестом. 100% покрытие кода не всегда стоит того: D – fideloper

ответ

0

От: 'https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html' The tests are public methods that are named test*. В моем проекте, если "Тест" а не первые 4 буквы функции, тест не запускается. Это, по крайней мере, часть вашей проблемы? На какой строке возникает исключение?

Смежные вопросы