Asynchronous 异步/等待函数中的Expect.assertions
来自Jest文档:Asynchronous 异步/等待函数中的Expect.assertions,asynchronous,async-await,jestjs,assertion,Asynchronous,Async Await,Jestjs,Assertion,来自Jest文档: Expect.assertions(number)验证一定数量的断言 在测试期间调用。这在测试时通常很有用 异步代码,以确保回调中的断言 实际上有人打过电话 这意味着,如果我们正在测试拒绝案例的承诺(在捕获中的断言),没有期望。断言承诺可能会得到解决,我们的测试将通过。然而,我们只是在测试函数中没有错误,我们的断言实际上从未运行过。换句话说,我们没有检查我们想要什么。我们得到了答案,但没有回答我们的问题,因为履行了承诺不会通过测试。总之,在检查拒绝/错误时必须定义断言的数量
Expect.assertions(number)
验证一定数量的断言
在测试期间调用。这在测试时通常很有用
异步代码,以确保回调中的断言
实际上有人打过电话
这意味着,如果我们正在测试拒绝案例的承诺
(在捕获
中的断言),没有期望。断言
承诺
可能会得到解决,我们的测试将通过。然而,我们只是在测试函数中没有错误,我们的断言实际上从未运行过。换句话说,我们没有检查我们想要什么。我们得到了答案,但没有回答我们的问题,因为履行了承诺
不会通过测试。总之,在检查拒绝/错误时必须定义断言的数量
文档中还有另一个例子:
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
,还是编写它只是一种最佳实践 你完全正确
使用catch
测试拒绝的承诺时,需要使用expect.assertions
在测试已解决的承诺或使用测试拒绝的承诺时,不需要使用expect.assertions
对于像这样的简单测试,expect.assertions
不是特别有用。对于更复杂的异步测试,有时可以添加expect.assertions
作为额外的保护措施,以确保测试按预期进行