如何在 Promise 上注册失败的 Mocha 测试
How to register a failed Mocha test on a Promise
我正在编写 Javascript Mocha 单元测试 returns 承诺的代码。我正在使用 Chai as Promised 库。我预计以下最小单元测试会失败。
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)
如何编写此测试,以便失败的断言导致测试计为失败?
我需要return断言的结果。此测试按预期失败。
it('should equal 5', function () {
return four.should.eventually.equal(5);
})
对于那些因断言失败而不是承诺单元测试失败而遇到麻烦的其他人,我了解到您不应该将 done
传递给该函数。相反,只是 return 承诺:
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
});
This article 给我指出了正确的方向。祝你好运!
扩展@piercebot 的回答,我正在使用 chai-as-promised 来解决这样的承诺:
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);
});
});
我正在编写 Javascript Mocha 单元测试 returns 承诺的代码。我正在使用 Chai as Promised 库。我预计以下最小单元测试会失败。
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)
如何编写此测试,以便失败的断言导致测试计为失败?
我需要return断言的结果。此测试按预期失败。
it('should equal 5', function () {
return four.should.eventually.equal(5);
})
对于那些因断言失败而不是承诺单元测试失败而遇到麻烦的其他人,我了解到您不应该将 done
传递给该函数。相反,只是 return 承诺:
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
});
This article 给我指出了正确的方向。祝你好运!
扩展@piercebot 的回答,我正在使用 chai-as-promised 来解决这样的承诺:
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);
});
});