Тест кодекса не проходит, хотя 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');
}