我正在阅读Laracast教程,建议我在我的测试类定义中包含 use DatabaseTransactions;
语句,以允许我的测试用例中的数据更改仅在该情况下保留。
我有一个测试课,
Class MyClassTest extends TestCase
{
// This use statement is responsible for
//all the data operations to persists only with in that test case
use DatabaseTransactions;
/**
* @test
*/
public function my_test_function()
{
// My test case code. Which inserts/updates
//data and assert statement.
}
}
use DatabaseTransactions
的工作方式是方法中的数据更改仅保留在其中。它究竟如何运作?
答案 0 :(得分:0)
进一步说,DatabaseTransactions
是特征,其中包含带beginDatabaseTransaction
注释的方法@before
。
use DatabaseTransactions
可让该类具有该方法。beginDatabaseTransaction
包含@before
注释,因此将在每个测试用例之前执行。以下是在测试用例结束之前开始事务并回滚现有事务的方法定义(在测试用例结束之前,仍然不清楚为什么应该调用@before
)。
@Before
public function beginDatabaseTransaction() {
$this->app->make('db')->beginTransaction();
$this->beforeApplicationDestroyed(function () {
$this->app->make('db')->rollBack();
});
}