在 codeception 功能测试中,seeInDatabase 从 laravel 起不起作用

In codeception functional test seeInDatabase not works from laravel

我正在使用 codeceptionlaravel 5.2 中进行测试。
这是我的 codeception.yml 文件:

actor: Tester
paths:
    tests: tests_codecept
    log: tests_codecept/_output
    data: tests_codecept/_data
    support: tests_codecept/_support
    envs: tests_codecept/_envs
settings:
    bootstrap: _bootstrap.php
    colors: false
    memory_limit: 1024M
extensions:
    enabled:
        - Codeception\Extension\RunFailed
modules:
    config:
        Db:
            dsn: 'mysql:host=localhost;dbname=kartice_test'
            user: '*******'
            password: '*******'
            dump: tests_codecept/_data/dump.sql
            populate: true
            cleanup: true
            reconnect: true

这里是 functional.suite.yml 文件:

class_name: FunctionalTester
modules:
    enabled:
        # add framework module here
        - \Helper\Functional
        - Asserts
        - Laravel5:
            environment_file: .env.testing
        - Db

这是我的 test method

public function provera_dodavanja_novog_klijenta(FunctionalTester $I)
{

    $this->authenticate($I);

    $I->amOnPage('/kancelarija/komitenti/create');
    $I->see('Kreiranje novog komitenta');
    $I->fillField('input[name=komitent_code]', 'kom1');
    $I->fillField('input[name=komitent_name]', 'Komitent 1');
    $I->click('btnSave');
    $I->seeInDatabase('komitenti', ['code' => 'kom1', 'name' => 'Komitent 1']);
    $I->see('Komitent Komitent 1 je uspešno kreiran.');

}

运行 功能测试失败并显示消息:

 Step  I see in database "komitenti",{"code":"kom1","name":"Komitent 1"}
 Fail  No matching records found for criteria {"code":"kom1","name":"Komitent 1"} in table komitenti
Failed asserting that 0 is greater than 0.

我做错了什么?

我看到了问题 Codeception seeInDatabase() doesn't work for me 但这对我没有帮助。

您可能应该使用 seeRecord 方法而不是 seeInDatabase。我不知道为什么,但对我来说,第一个有效,第二个无效。

我使用 gulp tdd 并且在测试表单时遇到此错误。 请检查:

  1. 您已将此添加到请求

    <YourFormRequest>use App\Http\Requests\<YourFormRequest>;

  2. 确保您的 table 模型是可批量分配的

    protected $fillable = ['tableField1', 'tableField2']