如何 运行 对 angular httpbasedservice 进行单元测试?
How to run unit test for angular httpbasedservice?
我已经从这个非常好的站点分叉了一项服务 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 参考:http://plnkr.co/edit/9yNZUpLpoTk9awNwGGEM?p=preview
您需要针对 response.data
属性 而不是整个响应对象进行断言。
returnedPromise.then(function(response) {
result = response.data;
});
问题出在您的测试用例上,因为您正在进行异步调用并期望将其用于结果数据..
这就是你所期待的..
expect(result).toEqual(returnData);
但由于它是异步调用,您不会立即得到结果,因此您的测试用例失败了。
所以你需要做这样的事情。
var result;
returnedPromise.then(function(response) {
result = response;
expect(result.data).toEqual(returnData);
});
我已经从这个非常好的站点分叉了一项服务 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 参考:http://plnkr.co/edit/9yNZUpLpoTk9awNwGGEM?p=preview
您需要针对 response.data
属性 而不是整个响应对象进行断言。
returnedPromise.then(function(response) {
result = response.data;
});
问题出在您的测试用例上,因为您正在进行异步调用并期望将其用于结果数据..
这就是你所期待的..
expect(result).toEqual(returnData);
但由于它是异步调用,您不会立即得到结果,因此您的测试用例失败了。
所以你需要做这样的事情。
var result;
returnedPromise.then(function(response) {
result = response;
expect(result.data).toEqual(returnData);
});