Codeception 测试失败,即使 try-catch

Codeception test fails even though try-catch

我是 PHP 和 Codeception 的新手,我一直在尝试使用页面对象编写一些基本测试。

这是我页面中的一个函数示例 class。理想情况下,它应该单击一个按钮,如果没有按钮,则只记录一条评论。

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

我得到 «Fail Link or Button or CSS or XPath element with '//div[@class="buttons-set"]/button ' 没有找到。”每次我尝试 运行 这个代码。

在AcceptanceTester.php中我有一个方法跟我很像:

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

如果 link 不可见,它也能正常工作。除了第一个垃圾代码位于页面 class 和第二个垃圾代码位于 AcceptanceTester.php.

之外,我没有看到任何区别

请帮我解决这个问题,或者给我建议如何重写这部分代码。

如果您在命名空间中进行测试(您应该这样做),代码将尝试捕获来自该命名空间的异常。 即

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');
}