Javascript 如何在承诺上注册失败的摩卡测试

Javascript 如何在承诺上注册失败的摩卡测试,javascript,promise,mocha.js,chai,Javascript,Promise,Mocha.js,Chai,我正在对返回承诺的代码编写Javascript Mocha单元测试。我正在使用图书馆。我预计下面的最小单元测试会失败 var chai = require("chai"); var chaiAsPromised = require("chai-as-promised"); chai.use(chaiAsPromised); chai.should(); var Promise = require("bluebird"); describe('2+2', function () { v

我正在对返回承诺的代码编写Javascript Mocha单元测试。我正在使用图书馆。我预计下面的最小单元测试会失败

var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
chai.should();

var Promise = require("bluebird");

describe('2+2', function () {
    var four = Promise.resolve(2 + 2);
    it('should equal 5', function () {
        four.should.eventually.equal(5);
    })
});
当我运行这个测试时,我看到控制台上打印了一个断言错误,但是测试仍然被认为通过了

> mocha test/spec.js 


  2+2
    ✓ should equal 5 
Unhandled rejection AssertionError: expected 4 to equal 5


  1 passing (10ms)

如何编写此测试,使失败的断言导致测试被视为失败?

我需要返回断言的结果。该测试如预期的那样失败

    it('should equal 5', function () {
        return four.should.eventually.equal(5);
    })

对于那些在失败的断言方面有困难而没有通过承诺的单元测试的人,我学到了不应该将
done
传递给函数。相反,只要回报承诺:

it('should handle promises', function(/*no done here*/) {

    return promiseFunction().then(function(data) {
        // Add your assertions here
    });

    // No need to catch anything in the latest version of Mocha;
    // Mocha knows how to handle promises and will see it rejected on failure

});

给我指出了正确的方向。祝你好运

扩展@piercebot answer,我用它来解决如下承诺:

var chai = require('chai');
var expect = chai.expect;
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised); 

...

it('should handle promises', function() {    
  return promiseFunction().then(function(res) {
    expect(Promise.resolve(res)).to.eventually.equals(true);
  });
});

使用
Promise.all
组合多个断言。这是世界上最好的答案。嗯,好吧,你可以看到我最近在努力克服我对JavaScript的无知——但从好的方面来说,这让我对一些小的帮助心存感激