首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步/等待函数中的Expect.assertions

异步/等待函数中的Expect.assertions
EN

Stack Overflow用户
提问于 2019-02-15 09:41:37
回答 1查看 2.4K关注 0票数 4

来自Jest文档:

Expect.assertions(number)验证在测试期间是否调用了一定数量的断言。在测试异步代码时,这通常很有用,以确保回调中的断言确实被调用。

这意味着,如果我们正在测试promises的拒绝案例(catch中的断言),那么如果没有expect.assertions promise,那么我们的测试就会通过。但是,我们只是在测试函数中没有错误,我们的断言实际上从未运行过。换句话说,我们没有检查我们想要什么。我们得到了答案,但没有对我们的问题,因为完成不会不及格的测试。总之,在检查拒绝/错误时必须定义断言的数量。

在docs中还有另一个例子:

代码语言:javascript
复制
test('the data is peanut butter', async () => {
  expect.assertions(1);
  const data = await fetchData();
  expect(data).toBe('peanut butter');
});

在使用async/await模式时,我们将等待promise得到解决,并且我们的测试条件肯定会运行。

expect.assertions在这里的目的是什么?我们真的需要在这段代码中使用expect.assertions,还是编写它只是一种最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-16 02:19:05

你说得对。

在使用expect.assertions测试被拒绝的承诺时,使用catch是必要的。

在测试已解析的承诺或使用.rejects测试被拒绝的承诺时,不必使用.rejects

对于这样一个简单的测试,expect.assertions并不特别有用。对于更复杂的异步测试,有时添加expect.assertions作为额外的安全措施是有用的,以确保测试按预期运行。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54706481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档