如何通过JSONP服务测试正在发送的请求和正在接收的数据?
angular.module('search', [])
.factory('SearchService', function($q,$rootScope,$resource) {
var _search = {};
_search.user = function(opts){
return $resource('https://api.github.com/users/:user', {user: opts.user}, {
search: {method:'JSONP',params:{callback: 'JSON_CALLBACK'}}
});
}
return _search;
});
遵循GET请求示例:
describe('search tests', function () {
var svc, httpBackend;
beforeEach(function (){
module('ngResource');
module('search');
inject(function($httpBackend, SearchService) {
svc = SearchService;
httpBackend = $httpBackend;
});
});
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('should send the message and return the response', function (){
var returnData = { testing: 'anything'};
httpBackend.expectJSONP('https://api.github.com/users/gigablox?callback=JSON_CALLBACK').respond(returnData);
svc.user({user:'gigablox'}, function(user) {
expect(user.testing).toEqual('anything');
});
httpBackend.flush();
});
});
我似乎无法得到一些错误:
Error: No pending request to flush !
Error: Unsatisfied requests: JSONP
使用AngularJS 1.2和Karma 0.10.2
在这里工作:http : //jsfiddle.net/DhUqT/
尝试search
像下面这样称呼您:
svc.user({user:'gigablox'}).search(function(user) {
expect(user.testing).toEqual('anything');
});
原因是调用方法svc.user()
返回资源类对象search()
。该search()
方法使用jsonp发出请求。如果不调用该search()
方法,$ httpBackend将不会看到任何请求,因此您会看到问题中提到的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句