typescript 《剧作家》中的错误如何认定?

yduiuuwa  于 2023-02-17  发布在  TypeScript
关注(0)|答案(1)|浏览(118)

尝试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();
xuo3flqw

xuo3flqw1#

发生这种情况是因为expect正在运行您的函数,但作为async,它得到的是一个承诺(尽管被拒绝),而不是一个错误/异常。
所以语法有点不同,你只需要传递expect结果promise,告诉它用.rejects打开promise,然后调用toThrow,如下所示:

await expect(hiddenLayersPage.clickGreenButton()).rejects.toThrow();

注意await的用法/位置,因为您需要等待异步匹配器,但不需要等待函数,因为您希望得到承诺。

相关问题