chai-as-promised 文档有以下在同一测试中处理多个 Promise 的示例:
it("should all be well", function (done) {
Q.all([
promiseA.should.become("happy"),
promiseB.should.eventually.have.property("fun times"),
promiseC.should.be.rejectedWith(TypeError, "only joyful types are allowed")
]).should.notify(done);
});
我假设Q
这里来自npm install q
and var Q = require('q');
.
哪里有.should
来自?
当我尝试这个时should
is undefined
我得到TypeError: Cannot call method 'notify' of undefined
.
有没有一些猴子补丁Q
这应该首先发生吗?或者我使用了错误版本的东西?
我用的是黄瓜和量角器。据我了解,他们还不支持返回承诺,因此用户必须处理对done
.
回答我自己的问题:
.should
来自“应该”断言风格 -http://chaijs.com/guide/styles/#should http://chaijs.com/guide/styles/#should。你需要运行:
chai.should();
after var Q = require('q');
但之前Q.all([]).should.notify...
:
var Q = require('q');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
// ***************
chai.should();
// ***************
chai.use(chaiAsPromised);
it("should all be well", function (done) {
Q.all([
promiseA.should.become("happy"),
promiseB.should.eventually.have.property("fun times"),
promiseC.should.be.rejectedWith(TypeError, "only joyful types are allowed")
]).should.notify(done);
});
根据文档:
这会将单个承诺断言的任何失败传递给测试框架
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)