在此提前感谢任何援助!
挣扎着测试使用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)
你需要 謼 errortest
. 现在你只需要使用函数对象,然后就没有意义去做 .should.eventually.throw()
. 一个对象不会抛出,只有代码 执行 可以。
所以,加括号。 errortest().should.eventually.throw()