在模型测试中使用$ softDelete问题

时间:2013-08-01 09:57:46

标签: unit-testing model laravel laravel-4

我在laravel 4中使用jeffrey方式的laravel-test-helper包来测试我的模型。当我使用

protected $softDelete = true;

在我的模型中,以下断言失败:

public function testMyModel()
{

    $obj = Factory::create('Modelname');
    Assert::equals(1,$obj->count());
}

当我在没有$ softDelete变量的情况下运行测试时,它运行正常。 任何错误的线索? 这是phpunit命令的堆栈跟踪,如果它有任何帮助:

/var/www/project/vendor/way/laravel-test-helpers/src/Way/Tests/TestFacade.php:41
/var/www/project/vendor/way/laravel-test-helpers/src/Way/Tests/TestFacade.php:25
/var/www/project/vendor/way/laravel-test-helpers/src/Way/Tests/TestFacade.php:55
/var/www/project/app/tests/models/ModelTest.php:13
/var/www/project/app/tests/models/ModelTest.php:13

1 个答案:

答案 0 :(得分:0)

Factory::create()将为您的模型创建随机变量。因为您使用的是“softDelete” - 您的表格中有一个名为“deleted_at”的字段。因此工厂将数据放入其中,Laravel认为记录已删除,因此->count()返回0.

您需要将deleted_at的出厂默认设置显式设置为null,如下所示:

$obj = Factory::create('Modelname', array('deleted_at' => null));