我已从这个非常好的网站http://www.benlesh.com/2013/06/angular-js-unit-testing-services.html分叉了一项服务。我正在玩httpBasedservice:
angular.module('myApp').factory('httpBasedService', function($http) {
return {
sendMessage: function(msg) {
return $http.get('somthing.json?msg=' + msg)
.success(function(result) {
return result.data;
})
.error(function(){
//
})
}
};
});
如何为httpBasedservice传递进行测试? plunkr ref:http://plnkr.co/edit/9yNZUpLpoTk9awNwGGEM?p=preview
答案 0 :(得分:0)
您需要针对response.data
属性而不是整个响应对象进行断言。
returnedPromise.then(function(response) {
result = response.data;
});
答案 1 :(得分:0)
问题在于您的测试用例,因为您正在进行异步调用并希望将其用于结果数据。
这是您所期待的......
expect(result).toEqual(returnData);
但由于它是异步调用,因此您无法立即获得结果,因此您的测试用例将失败。
所以你需要做这样的事情。
var result;
returnedPromise.then(function(response) {
result = response;
expect(result.data).toEqual(returnData);
});