mocha返回一个promise,false positive pass,并抛出异常指示错误

时间:2016-02-08 21:18:13

标签: promise mocha bluebird should.js

我使用Mocha和shouldjs以及bluebird编写单元测试。

根据文档(http://shouldjs.github.io/#assertion-finally),我应该能够返回一个Promise,并对其进行测试。

它正在运行,但未经过测试。抛出一个断言,但测试似乎已经过了

这是我的代码。它非常直接来自于shouldjs文档:

'use strict';

require('should');
var Promise = require('bluebird');

describe('demo should error', function () {
    it('I should fail - but Im not', function () {
        var prm = new Promise(function(resolve, reject) { resolve(10); });
        return prm.should.be.finally.equal(9);
    });
});

当我在摩卡中运行时,我得到以下内容:

    >>> mocha tests/demo.js
    (node) child_process: options.customFds option is deprecated. Use options.stdio instead.

      ․Unhandled rejection AssertionError: expected 10 to be 9
        at Assertion.fail (/Users/andrew/projects/DELETE_ME/2016-02-07/node_modules/should/lib/assertion.js:91:17)
        at Assertion.Object.defineProperty.value (/Users/andrew/projects/DELETE_ME/2016-02-07/node_modules/should/lib/assertion.js:163:19)
    ...

  1 passing (14ms)

因此抛出异常,但测试似乎已经过去了。

当我使用原生Promise时,我也会得到误报,而不是蓝鸟,但是没有显示堆栈跟踪。

感激不尽的任何帮助......

1 个答案:

答案 0 :(得分:1)

我使用的是过时的摩卡......

npm i -g mocha

诀窍