【发布时间】:2021-05-16 04:39:15
【问题描述】:
每次我运行我的测试时
php artisan test
当我想在我的数据库中查看插入的数据时,表完全是空的。
这是我的测试
class ExampleTest extends TestCase
{
use RefreshDatabase;
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$ad = new Ad();
$ad->name = 'test';
$ad->price = 100000;
$ad->save();
$this->assertTrue($ad->id > 0);
var_dump($ad->id);
}
}
测试验证数据库是否正确生成了一个id,并且每次的结果都是正确的。
从我的角度来看,特性 RefreshDatabase 在每次测试之前而不是之后刷新数据库......这到底是怎么可能的?
注意:我确信我正在检查正确的数据库,因为如果我删除 use RefreshDatabase 我可以看到记录。
精度:
如果不是RefreshDatabase 我使用DatabaseTransactions 我可以在运行测试后看到记录。我无法理解它......
【问题讨论】:
-
预计
RefreshDatabase会清除数据库,因此测试不会相互影响。 -
@SuperDJ 是的,我的整个套件中只有一种测试方法,所以我必须能够看到数据库中的记录..
-
你对数据库何时刷新的理解有误,每次测试清库after。
-
哦,你是对的。我现在感觉有点不舒服..但是这种行为真的很奇怪,例如在测试失败后能够读取以记录在数据库中通常非常有用..
-
断言失败的结果应该让您很好地了解问题所在。可能需要使您的测试/断言更具表现力。