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