我有一个如下控制器,它依赖于customerService
,它将从服务器返回基于result
的搜索listParam
:
self.result = [];
self.listParam= {};
self.search= function () {
self.result.length = 0;
self.findingPromise = customerService.find(self.listParam);
self.findingPromise
.then(function (response) {
self.result = response.data.Result;
}, function (response) {
var r = response;
ngNotify.set('Some problems occurred!',
{
type: 'error',
position: 'top',
sticky: true
});
});
};
我想将 Jasmine 用于单元测试。我看过Unit Testing for AngularJS文章。但我不明白在这种情况下我应该如何使用 mocking (搜索)。如您所见,我可能已根据服务后端解决了响应。
答案 0 :(得分:1)
您可以使用间谍模拟您的服务,也许这样的工作
spyOn(customerService, "find").and.callFake(function() {
return {
then:function(callback) {
var yourReturnObject = {};
return callback(yourReturnObject);
}
};
});
此外,您可以使用承诺使您的服务有效或失败。
deferred = $q.defer();
spyOn(customerService, 'find').andReturn(deferred.promise);
// here your asserts
// In case that you want to make your service fail
deferred.reject({ ... });
// In case that you want to make your service work
deferred.resolve({ ... });