我正在编写返回promises的代码的Javascript Mocha单元测试 . 我正在使用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)
如何编写此测试以使失败的断言导致测试计为失败?
3 回答
对于其他任何因断言失败而没有使用promises进行单元测试失败的人,我了解到你不应该将
done
传递给该函数 . 相反,只需返回承诺:This article指出了我正确的方向 . 祝好运!
我需要返回断言的结果 . 此测试按预期失败 .
扩展@piercebot回答,我使用chai-as-promised来解决这样的承诺: