在测试承诺拒绝时,当使用Mocha与chai-as-promised时,得到的是 "不是一个thenable"。

问题描述 投票:0回答:1

在此提前感谢任何援助!

挣扎着测试使用Mocha,Chai和Chai作为承诺拒绝我试图用asyncawait来完成这个任务,但无法成功,我决定从基础开始。

我期望至少有 test 3 通过摩卡测试。我到底做错了什么?

我使用的是下面的代码。

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();
  });
});

我的控制台输出。

 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)
javascript node.js promise mocha chai
1个回答
0
投票

你需要 errortest. 现在你只需要使用函数对象,然后就没有意义去做 .should.eventually.throw(). 一个对象不会抛出,只有代码 执行 可以。

所以,加括号。 errortest().should.eventually.throw()

© www.soinside.com 2019 - 2024. All rights reserved.