Php 如何将Laravel5中的数据库事务与Codeception一起使用?
我正在用Codeception测试我的laravel5api,我注意到Codeception附带的回滚功能有时会变得有点慢,因为我提供了巨大的SQL转储。一种解决方案是使用SQLite使其更快,但我希望坚持使用MySQL 我认为Laravel5中的数据库事务功能有助于加快速度。但我正在努力实现如何将它与codeception一起使用,以及它是否也可以在第一时间使用Php 如何将Laravel5中的数据库事务与Codeception一起使用?,php,mysql,laravel,laravel-5,codeception,Php,Mysql,Laravel,Laravel 5,Codeception,我正在用Codeception测试我的laravel5api,我注意到Codeception附带的回滚功能有时会变得有点慢,因为我提供了巨大的SQL转储。一种解决方案是使用SQLite使其更快,但我希望坚持使用MySQL 我认为Laravel5中的数据库事务功能有助于加快速度。但我正在努力实现如何将它与codeception一起使用,以及它是否也可以在第一时间使用 <?php $I = new ApiTester($scenario); $I->wantTo('create a
<?php
$I = new ApiTester($scenario);
$I->wantTo('create a new comment');
$I->haveHttpHeader('Authorization', 'Bearer ' . file_get_contents('tests/api/token'));
$I->sendPost('comments', [
"document_id" => "2",
"comment_type_id" => "2",
"user_id" => "2",
"body" => "Testing"
]);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['status' => 'success']);
$I->seeInDatabase('comment', [
"document_id" => "2",
"comment_type_id" => "2",
"user_id" => "2",
"body" => "Testing"
]);
但它没有起作用
我甚至试着用这样的方式来总结整个测试:
\DB::transaction(function () {
// Whole Test here
});
但即使这样也没有成功。运行测试后,我仍然可以在DB中看到新的注释。那么,我做错了什么以及如何处理它呢?您的
测试/api.suite.yml
文件是什么样子的
它适合我,我的看起来像这样:
class_name: ApiTester
modules:
enabled:
- Helper\Api
- Asserts
- Laravel5:
environment_file: .env
- REST:
depends: Laravel5
添加这个可能会有所帮助,但我不需要这样做
- Laravel5:
cleanup: true
如果不需要保存任何数据,可以使用
blackhole
引擎进行这些测试。
- Laravel5:
cleanup: true