【发布时间】:2019-08-01 11:48:33
【问题描述】:
在 Laravel 中,有一个名为 DatabaseTransactions 的 trait 可以回滚由测试生成的所有事务,以保持数据库的清洁和隔离。很好用。
但是 PHPUnit 中有一个名为 Test Dependencies 的功能,您可以在其中使用另一个测试的输出:
/**
* @test
*/
public function a_producer_test()
{
$user = factory(User::class)->create();
return $user;
}
/**
* @test
* @depends a_producer_test
*/
public function a_consumer_test(User $user)
{
$id = $user->id;
}
使用DatabaseTransactions 时,不能在a_consumer_test 中使用$user,因为创建用户的事务已回滚,因此$user 为空。如果你从测试类中删除use DatabaseTransactions;,一切正常,你可以使用$user。
现在我想在我的a_consumer_test 方法中包含$user,但我想在执行测试后回滚事务并清理我的数据库。我该怎么做?
【问题讨论】: