Javascript 如何在承诺上注册失败的摩卡测试
我正在对返回承诺的代码编写Javascript Mocha单元测试。我正在使用图书馆。我预计下面的最小单元测试会失败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
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的无知——但从好的方面来说,这让我对一些小的帮助心存感激