Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 异步/等待函数中的Expect.assertions_Asynchronous_Async Await_Jestjs_Assertion - Fatal编程技术网

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

Asynchronous 异步/等待函数中的Expect.assertions,asynchronous,async-await,jestjs,assertion,Asynchronous,Async Await,Jestjs,Assertion,来自Jest文档: Expect.assertions(number)验证一定数量的断言 在测试期间调用。这在测试时通常很有用 异步代码,以确保回调中的断言 实际上有人打过电话 这意味着,如果我们正在测试拒绝案例的承诺(在捕获中的断言),没有期望。断言承诺可能会得到解决,我们的测试将通过。然而,我们只是在测试函数中没有错误,我们的断言实际上从未运行过。换句话说,我们没有检查我们想要什么。我们得到了答案,但没有回答我们的问题,因为履行了承诺不会通过测试。总之,在检查拒绝/错误时必须定义断言的数量

来自Jest文档:

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
作为额外的保护措施,以确保测试按预期进行