Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Laravel5中的数据库事务与Codeception一起使用?_Php_Mysql_Laravel_Laravel 5_Codeception - Fatal编程技术网

Php 如何将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

我正在用Codeception测试我的laravel5api,我注意到Codeception附带的回滚功能有时会变得有点慢,因为我提供了巨大的SQL转储。一种解决方案是使用SQLite使其更快,但我希望坚持使用MySQL

我认为Laravel5中的数据库事务功能有助于加快速度。但我正在努力实现如何将它与codeception一起使用,以及它是否也可以在第一时间使用

<?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