2
我有一個測試,需要一個承諾運行和後來在其then
處理程序另一個承諾返回功能運行。茉莉花2.0測試與嵌套的角度承諾
第一個承諾解決了,並且成功調用了返回承諾的下一個函數。然而,第二個承諾的處理程序永遠不會觸發。
是否有另一種方法來測試使用Jasmine 2.0的嵌套承諾?
例題:
describe("nested promise suite", function() {
var prom1 = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('prom1');
}, 500)
return deferred.promise;
};
var prom2 = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('prom2');
}, 500);
return deferred.promise;
};
iit("nested promise test", function (done) {
prom1()
.then(function (result) {
console.log('prom1 result ', result);
prom2()
.then(function (result2) {
console.log('prom2 result ', result2);
})
.finally(function() {
console.log('you did it');
})
})
.finally(done); //this causes promise one to resolve properly but unsure of how to make the second promise resolve properly
$timeout.flush();
})
});
你應該總是從'then()'回調函數返回你的承諾。 – Bergi 2015-03-03 12:36:09
請勿使用[deferred antipattern](http://stackoverflow.com/q/23803743/1048572)! ['$ timeout'](https://docs.angularjs.org/api/ng/service/$timeout)已經返回一個承諾。 – Bergi 2015-03-03 12:38:44