0

我在 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
4

1 回答 1

0

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

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

$obj = Factory::create('Modelname', array('deleted_at' => null));
于 2013-08-01T12:23:07.260 回答