在使用 Laravel 5.2 和 Postgresql 进行 api 测试后,Codeception 进行了奇怪的回滚

Codeception making weird rollback after api test with Laravel 5.2 & Postgresql

我在 Laravel 中使用代码接收时遇到错误。即使我在邮递员中测试了路由并且它有效,它也没有插入,我还调试了控制器以查看它是否被异常捕获但它没有,而且我知道它没有插入是因为 $I-> seeInDatabase() 方法,但 table 中 id 的自动增量确实增加了。如果我使用邮递员进行测试,它也会坚持插入(如果我 运行 在邮递员之前使用代码接受测试,则使用递增的 id)。这是我的测试:

    public function RegistrarCorrectamente(ApiTester $I) //200
    {
            $I->wantTo('Registrarse correctamente');
            $I->sendPOST($this->url, [
                'email' => 'tester123@gmail.com',
                'first_name' => 'Prueba4',
                'last_name' => 'Probador',
                'community_id' => 2,
            ]);
            $I->seeInDatabase('app.users_x_communities', array('email' => 'tester123@gmail.com'));
            $I->seeInDatabase('app.users', array('first_name' => 'Prueba4'));

            /*$this->checkResponseCode($I, HttpCode::OK);*/
            $I->seeResponseIsJson();
            $I->seeResponseContainsJson(array(
                'estado' => true,
            ));
    }

seeInDatabase 方法看不到插入。

知道如何解决这个问题吗?另外,这是我的 yml 文件和 .env:

api.suite.yml:

    class_name: ApiTester
    modules:
        enabled:
            - \Helper\Api
            - Asserts
            - Laravel5
            - Db
            - REST:
                url: http://localhost:8000/api/
                depends: Laravel5
        config:
            Laravel5:
                environment_file: .env.testing

codeception.yml:

    actor: Tester
    paths:
        tests: tests
        log: tests/_output
        data: tests/_data
        support: tests/_support
        envs: tests/_envs
    settings:
        bootstrap: _bootstrap.php
        colors: false
        memory_limit: 1024M
    extensions:
        enabled:
            - Codeception\Extension\RunFailed
    modules:
        config:
            Db:
                dsn: 'pgsql:host=localhost;port=5432;dbname=movers'
                user: 'postgres'
                password: '1234'

.env.testing:

    APP_ENV=testing
    APP_KEY=base64:WRVmtVKixE3/MQ5bcDA3rrEaYqCavwaoleuRkcZtc4w=
    APP_DEBUG=true
    APP_LOG_LEVEL=debug
    APP_URL=http://localhost

    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=movers
    DB_USERNAME=postgres
    DB_PASSWORD=1234

    API_VERSION=v1
    API_NAME="Movers API"
    API_PREFIX=api
    API_STANDARDS_TREE=vnd
    API_SUBTYPE=movers
    API_DEBUG=true

    CACHE_DRIVER=file
    SESSION_DRIVER=file
    QUEUE_DRIVER=sync

    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379

澄清一下,我已经尝试过清理(真和假)和填充(真和假)。

提前致谢!

Laravel5 模块在事务内部运行测试然后回滚:

cleanup: boolean, default true - all database queries will be run in a transaction, which will be rolled back at the end of each test.

db模块看不到记录,因为它使用了单独的数据库连接。

使用 Laravel 模块的 seeRecord 方法或禁用清理。