Codeception: [RuntimeException] Вызов неопределенного метода AcceptanceTester::wait

Я делаю свой первый приемочный тест с Codeception.

Когда я запускаю свой тест с wait() или waitForElement(), я получаю это сообщение:

[RuntimeException] Call to undefined method AcceptanceTester::wait  

Вот мой acceptance.yml

# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate     suite.

class_name: WebGuy
modules:
enabled:
    - WebDriver
    - \Helper\Acceptance
config:
    WebDriver:
        url: 'http://rh.dev'
        browser: 'firefox'

И вот мой тест:

$I = new AcceptanceTester($scenario);
$I->wantTo('Register my profile for the first time');
$I->amOnPage('/register');
$I->fillField('name', $person->name);
$I->wait(3); // secs
$I->fillField('lastName', $person->lastName);

Я получил его из официального документа

Я также обязательно выполнил:

vendor/bin/codecept build

В чем проблема?


person Juliatzin    schedule 18.03.2016    source источник
comment
Ваш файл конфигурации объявляет WebGuy и использует стиль конфигурации Codeception 2.0 (или более ранней версии), но в вашем тесте используется AcceptanceTester. Они не связаны.   -  person Naktibalda    schedule 22.03.2016
comment
Я не понимаю. Я новичок в кодировании. Не могли бы вы подробно?   -  person Juliatzin    schedule 22.03.2016


Ответы (2)


Изменить class_name: WebGuy на class_name: AcceptanceTester

person Naktibalda    schedule 22.03.2016

У меня была аналогичная проблема с отсутствующим методом wait(). Проблема была в том, что я использовал PhpBrowser вместо WebDriver, а PhpBrowser не предоставляет этот метод. Это тривиально реализовать самостоятельно в вашем классе тестера:

public function wait($seconds) {
    sleep($seconds);
}
person gvlasov    schedule 09.09.2016
comment
Лучше сделать так, чтобы он ничего не делал, потому что ваша функция заставляет тест выполняться на X секунд дольше без уважительной причины. - person Naktibalda; 11.09.2016
comment
@Naktibalda Почему ты уверен, что у меня нет веской причины? Например, я могу ждать, пока мой тестовый почтовый сервер передаст электронное письмо. Я могу ждать всего, что происходит вне браузера. - person gvlasov; 12.09.2016
comment
wait() в WebDriver предназначен для отложенных эффектов в браузере. При использовании PhpBrowser таких эффектов нет. Было бы лучше использовать другое имя метода, когда вам действительно нужно ждать в обоих модулях. - person Naktibalda; 12.09.2016