【发布时间】:2021-08-30 07:43:04
【问题描述】:
我有一个测试,我等待显示一些文本:
const allTodosPromise = findByText('All Todos')
我的测试实际上是检查返回的 HTMLElement 是否具有某种样式(查看它是否处于活动状态):
expect(await allTodosPromise).toHaveStyle(activeItemStyle);
失败并显示消息“无法找到带有文本'All Todos'...的元素”。
但是,如果我用 then 解决我的承诺,则测试通过,例如:
allTodosPromise.then(htmlElement =>
expect(htmlElement).toHaveStyle(activeItemStyle)
);
为什么?是的,我确实说过我的测试函数是async。
同样尝试在第一个引用中等待失败:
const allTodosElement = await findByText('All Todos');
【问题讨论】:
-
我猜第二个版本的测试通过了,因为在测试结束之前实际上没有达到预期,而不是因为它已经达到并且没有失败。请参阅jestjs.io/docs/asynchronous - 您可以通过断言达到的期望数量来检查。
-
能否提供被测代码?
标签: javascript reactjs jestjs react-testing-library