尝试Assert一个已知的TimeoutError会让我发疯。我目前正在Playwright Node.js中测试UI Testing Playground中的隐藏层场景,我想知道是否有可能让TimeoutError不失败测试,因为这是预期。我在自动化Playwright和Typescript方面都是新手。
我尝试了多种方法,甚至让clickGreenButton()
方法抛出错误,但似乎**expect()**函数根本没有捕捉到它。HiddenLayersPage.ts
内部的方法:
async clickGreenButton() {
await this.greenButton.click()
}
规范文件中的代码,该代码应检查第二次单击是否会成功,因为要单击的元素变为隐藏:
await hiddenLayersPage.clickGreenButton();
expect(async () => await hiddenLayersPage.clickGreenButton()).toThrow();
1条答案
按热度按时间xuo3flqw1#
发生这种情况是因为expect正在运行您的函数,但作为
async
,它得到的是一个承诺(尽管被拒绝),而不是一个错误/异常。所以语法有点不同,你只需要传递expect结果promise,告诉它用
.rejects
打开promise,然后调用toThrow
,如下所示:注意
await
的用法/位置,因为您需要等待异步匹配器,但不需要等待函数,因为您希望得到承诺。