javascript - Jest - 断言异步函数引发测试失败

标签 javascript reactjs unit-testing jestjs

得到以下失败的测试用例,我不知道为什么:

foo.js

async function throws() {
  throw 'error';
}

async function foo() {
  try {
    await throws();
  } catch(e) {
    console.error(e);
    throw e;
  }
}

test.js

const foo = require('./foo');

describe('foo', () => {
  it('should log and rethrow', async () => {
    await expect(foo()).rejects.toThrow();
  });
});

我希望 foo 抛出异常,但由于某种原因它只是解析并且测试失败:

FAILED foo › 应该记录并重新抛出 - 接收到的函数没有抛出

Live example

可能缺少异步等待抛出行为的一些基本细节。

最佳答案

我认为你需要的是检查被拒绝的错误

const foo = require('./foo');
describe('foo', () => {
  it('should log and rethrow', async () => {
    await expect(foo()).rejects.toEqual('error');
  });
});

关于javascript - Jest - 断言异步函数引发测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58873984/

相关文章:

可选回调的 JavaScript 样式

javascript - 如何使用 Google Maps API 在标记上设置弹出窗口?

javascript - 在鼠标指针悬停的 react-vis 图表中添加一条垂直线

c++ - 谷歌模拟单例 C++ 类

javascript - 将参数传递给 javascript onclick 函数

javascript - Chrome 应用程序开发

css - 使用 const 和 "text" react 内联样式

javascript - 在 Mobx 中解决 promise ?

sql - django 在运行测试时如何查看 sql 查询?

Android:在 ListView 中获取第 i 个 TextView