Codeception seeInDatabase () не работает должным образом - PullRequest
0 голосов
/ 23 июня 2019

У меня проблемы с получением кодовых восприятий seeInDatabase() для работы.Это мой Cest:

public function testContactMailCheckbox(AcceptanceTester $I) {
    $I->scrollTo("#adminMailSettingsForm", 0, -200);
    $I->seeInDatabase("pib_users", [
        "user_email" => "admin-cest@example.org",
        "user_receive_contact_notification" => 0
    ]);

    $I->click("//label[@for='contactMailNotification']", "#adminMailSettingsForm");
    $I->waitForJS("return $.active == 0;",10);
    $I->wait(100);
    $I->seeInDatabase("pib_users", [
        "user_email" => "admin-cest@example.org",
        "user_receive_contact_notification" => 1
    ]);
}

Первый seeInDatabase() проходит, все хорошо.Я могу убедиться, что это утверждение seeInDatabase-Assertion работает правильно, изменив данные по умолчанию в моем дампе базы данных.Когда я изменяю данные по умолчанию на "user_receive_contact_notification" => 1, первый seeInDatabase терпит неудачу, что означает, что он работает правильно.

Я использую $I->wait(100), чтобы убедиться, что нет проблем синхронизации.В течение этого промежутка времени я могу проверить через phpMyAdmin, что строка действительно обновлена ​​правильно.Это означает, что тест должен пройти.

Вот мой Db-config:

actor: AcceptanceTester
modules:
  enabled:
      - WebDriver:
          url: 'http://pib.local/'
          window_size: false # disabled in ChromeDriver
          port: 5555
          browser: chrome
          capabilities:
            chromeOptions:
              args: ["--headless", "--no-sandbox", "--disable-gpu", "--window-size=1920,1080"]

      - \Helper\Acceptance
      - Sequence
      - \Helper\DbHelper
  config:
      \Helper\DbHelper:
          user: "root"
          password: ""
          dsn: "mysql:host=localhost;dbname=pib"
          cleanup: true
          dump: 'tests/database_dump_tests.sql'
          populate: true
          reconnect: true
  step_decorators: ~

Мой DbHelper содержит только одну функцию:

class DbHelper extends \Codeception\Module\Db
{
    public function putInDatabase($table, $data, $insertOnlyIfNotExisting = true) {
        // if ignoreDuplicateError is true, only execute insert when not existing already
        if($this->countInDatabase($table, $data) == 0 | !$insertOnlyIfNotExisting) {
            $this->_insertInDatabase($table, $data);
        }
    }
}

Это может быть связано с этим вопросом .Однако я не использую Laravel, так что использование seeRecord() -помогателя мне не поможет.

...