1
我有一个工厂函数,它直接返回http承诺(其大约3层深,并且我不关心该路径和返回的内容)
它看起来像这样:
user.create()
.success(function(result){})
.error(function(err){})
我只想嘲笑的成功和错误位。我尝试过使用$ q并解决或拒绝它,但这似乎不适用于成功和错误。
我的模拟工厂带Q的样子:
var user = {
create: function (email) {
var deferred = q.defer();
deferred.resolve();
return deferred.promise;
}
};
而且是相当多我想要使用。有没有办法可以返回成功和错误,而不是呢?
这工作,这样的代码将执行(我基于它关闭的$ HTTP源代码),但不知道如何与它
var factory = {
factoryFunction: function() {
var deferred = q.defer();
//You can test that it was called here
deferred.resolve();
var promise = deferred.promise;
promise.success = function (fn) {
//Both success and error get called... be careful
return promise;
};
promise.error = function (fn) {
//Both success and error get called... be careful
return promise;
};
return promise;
}
};
我们永远需要从工厂返回一个承诺。你能说出这种情况吗,正如你采取这种方法的原因?你想要工厂做什么? –
@manasisakhare,这是明显错误的。服务当然会回复承诺。 –
我会重构调用代码,并将返回的承诺视为常规承诺而不是HTTP承诺。请注意$ q有一个'.when()'方法,它返回一个已解决的承诺。 –