首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在测试promise rejections时,当使用带有chai-as-promised的Mocha时,获取“不是一种可能”

在测试promise rejections时,当使用带有chai-as-promised的Mocha时,获取“不是一种可能”
EN

Stack Overflow用户
提问于 2020-05-28 01:27:41
回答 1查看 234关注 0票数 0

提前感谢您在这方面的帮助!

艰难地使用Mocha、Chai和Chai测试promise rejections正如我承诺的那样我试图使用async/await来实现这一点,但无法成功,我决定从基础开始。

我希望test 3至少能通过摩卡测试。我做错了什么?

我使用了以下代码:

代码语言:javascript
复制
const chai = require('chai');
const chaiAsPromised = require("chai-as-promised")

chai.use(chaiAsPromised)
const should = chai.should()

describe.only('Testing promise tests', () => {
  const errortest = () => Promise.reject('rejecting...')
  it('test 1', () => {
    Promise.reject('rejecting...').should.throw();
  });
  it('test 2', () => {
    errortest.should.throw();
  });
  it('test 3', () => {
    errortest.should.eventually.throw();
  });
});

我的控制台输出:

代码语言:javascript
复制
 0 passing (10ms)
  3 failing

  1) Testing promise tests
       test 1:
     AssertionError: expected {} to be a function
      at Context.<anonymous> (test/promise.test.js:17:42)
      at processImmediate (internal/timers.js:456:21)

  2) Testing promise tests
       test 2:
     AssertionError: expected [Function: errortest] to throw an error
      at Context.<anonymous> (test/promise.test.js:22:27)
      at processImmediate (internal/timers.js:456:21)

  3) Testing promise tests
       test 3:
     TypeError: [Function: errortest] is not a thenable.
      at assertIsAboutPromise (node_modules/chai-as-promised/lib/chai-as-promised.js:31:19)
      at Assertion.<anonymous> (node_modules/chai-as-promised/lib/chai-as-promised.js:53:13)
      at Assertion.propertyGetter (node_modules/chai/lib/chai/utils/addProperty.js:62:29)
      at Object.get (<anonymous>)
      at Object.proxyGetter [as get] (node_modules/chai/lib/chai/utils/proxify.js:98:22)
      at Context.<anonymous> (test/promise.test.js:26:22)
      at processImmediate (internal/timers.js:456:21)
EN

回答 1

Stack Overflow用户

发布于 2020-05-28 01:39:46

您需要调用errortest。现在你只需要使用function对象,这样做.should.eventually.throw()就没有任何意义了。对象不会引发;只有代码执行才能引发。

因此,添加括号:errortest().should.eventually.throw()

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

https://stackoverflow.com/questions/62049225

复制
相关文章

相似问题

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