我有一个直接返回http promise的工厂函数(它大约有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;
}
};
几乎就是我想要使用的东西。有没有办法q可以返回成功和错误而不是那么?
这样可以执行代码(我基于$ 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;
}
};
答案 0 :(得分:0)
如果您使用Jasmine对此进行测试,则可以使用spyOn。
spyOn(工厂,'创建')。和CallFake(function(){ return $ .Deferred()。resolve({ ReturnObject:true }); });
这个网站有一个很好的列表,列出了如何使用spyOn:http://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/