В функциональном тесте codeception seeInDatabase не работает с laravel

Я использую codeception для тестирования в laravel 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() у меня не работает, но это мне не помог.


person gandra404    schedule 17.01.2016    source источник


Ответы (2)


Вероятно, вам следует использовать метод seeRecord вместо seeInDatabase. Не знаю почему, но у меня первый работал, а второй - нет.

person Marcin Nabiałek    schedule 17.01.2016
comment
Сложно сказать, но в документации нет информации, что это не могло бы работать в Laravel. Я потратил много времени около года назад, чтобы решить эту проблему и просто перейти на использование метода seeRecord - person Marcin Nabiałek; 17.01.2016

Я использую gulp tdd и при тестировании форм натыкаюсь на эту ошибку. Пожалуйста, проверьте:

  1. Вы добавили это в запросы

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

  2. Убедитесь, что модель для вашей таблицы доступна для массового назначения.

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

person Christopher Govender    schedule 30.07.2016