Jest:在测试 Promise 时抛出先前的 Promise 拒绝

问题描述

当我测试 promise 时,我的 Jest 测试一直显示 thrown: "I-failed"。代码如下:

test('testing variable is Promise',() => {
  const rejectPromise = Promise.reject('I-failed')
  expect(rejectPromise instanceof Promise).toBe(true)
})
test('Promis Test',() => {
  const promise = new Promise((resolve,reject) => window.setTimeout(() => resolve(123),300))
  return promise.then(data => expect(data).toBe(123))
})

结果:

  ● Promis Test

    thrown: "I-failed"

      at _getError (node_modules/jest-circus/build/utils.js:442:18)
          at Array.map (<anonymous>)

如果我将 toBe(123) 更改为 toBe(1234),Jest 会显示:

  ● Promis Test

    thrown: "I-failed"

      at _getError (node_modules/jest-circus/build/utils.js:442:18)
          at Array.map (<anonymous>)

  ● Promis Test

    expect(received).toBe(expected) // Object.is equality

    Expected: 1234
    Received: 123

似乎 Jest 不断显示一个不在我的代码中的额外错误。显然,错误是由上次测试未捕获的拒绝引起的。

当然我可以在 .catch() 后面添加一个 Promise.reject('I-failed') 来处理它,但我认为这不是我第一次测试的第一个目标:"Promise.reject() 是一个承诺“.

有没有办法让我的第一个测试仍然检测到Promise.reject() is a promise”,而第二个检测异步承诺流程的测试工作正常?

节点版本:11.15.0
玩笑版本:@testing-library/react:^11.1.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...