Тест кодекса не проходит, хотя try-catch

Я новичок как в PHP, так и в Codeception, я пытался написать несколько базовых тестов, используя объект страницы.

Вот пример функции в классе моей страницы. В идеале, он должен нажать на кнопку, а если кнопки нет, просто зарегистрировать комментарий.

try {
    $I->click(self::$buttonAddNewAddress);
} catch (Expection $e) {
    $I->comment('This address will be the first one');
}

Каждый раз, когда я пытаюсь запустить этот код, я получаю "Fail Link, или Button, или CSS, или элемент XPath с '//div[@class="buttons-set"]/button'.

В AcceptanceTester.php у меня есть метод, который похож на меня:

try {
    $I->click('//a[contains(.,"No Thanks")]');
} catch (Exception $e) {
    $I->comment('No email capture visible');
}

И это работает правильно, если ссылка не видна. Я не вижу никакой разницы, кроме того, что первый мусор кода находится внутри класса страницы, а второй - внутри AcceptanceTester.php.

Пожалуйста, помогите мне с этим или дайте мне совет, как переписать эту часть кода.

1 ответ

Решение

Если у вас есть тесты в пространстве имен (и вы должны это сделать), код попытается перехватить исключение из этого пространства имен. Т.е.

namespace MyTest;

try {
    $I->click(self::$buttonAddNewAddress);
} catch (Exception $e) {
    $I->comment('This address will be the first one');
}

Это будет только поймать \MyTest\Exception,

Вам нужно добавить \ к вашему коду.

namespace MyTest;

try {
    $I->click(self::$buttonAddNewAddress);
} catch (\Exception $e) {
    $I->comment('This address will be the first one');
}
Другие вопросы по тегам