使用Laravel 5.2和api测试进行api测试后,编码会进行奇怪的回滚。 PostgreSQL的

时间:2016-11-28 16:54:11

标签: php postgresql laravel-5.2 codeception

我在使用Laravel的代码时遇到错误。即使我在邮递员中测试路线并且它工作,它也没有进行插入,我还调试了控制器以查看它是否被异常捕获但它没有,我知道它没有插入因为$ I-&gt ; seeInDatabase()方法,但表中id的自动增量确实递增。如果我使用postman进行测试,它也会持续插入(如果我在postman之前使用codeception运行测试,则会增加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

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

  

cleanup:boolean,默认为true - 所有数据库查询都将在事务中运行,该事务将在每次测试结束时回滚。

Db模块无法查看记录,因为它使用单独的数据库连接。

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