ユニットテストでは、ある関数が関数呼び出しから約束したq.allSettled()
を返し、その約束に.fail
が付いています。しかし、.allSettled
は、いくつかの/すべての約束が拒否されても.then
を呼び出すでしょう。ここでQ.allSettledはこれまでに失敗しますか?
は例です:
function someFunctionToTest(){
var aRejectedDeferred = Q.defer();
var anotherRejectedDeferred = Q.defer();
var aResolvedDeferred = Q.defer();
aRejectedDeferred.reject(new Error("I'm aRejectedPromise"));
anotherRejectedDeferred.reject(new Error("I'm anotherRejectedPromise"));
aResolvedDeferred.resolve({awesome:"I'm aResolvedPromise"});
return Q.allSettled([aRejectedDeferred.promise,anotherRejectedDeferred.promise, aResolvedDeferred.promise])
}
it('should never fail', function(done) {
someFunctionToTest()
.then(function (data) {
should.equal(data[0].state,'rejected');
should.equal(data[1].state,'rejected');
should.equal(data[2].state,'fulfilled');
// throw(new Error('I will trigger fail!!!'));
done();
})
.fail(function (err) {
done(err);
});
});
あなたは.fail
がトリガーされるいくつかの例を提供することができますか?
私はソースを見ていませんでしたが、配列/ iterableなどを渡さなければ失敗すると思います。 – Bergi
@Bergi、いいえ、空の配列で '.then'を呼び出すだけです。 – Shanimal