服务'ApiService'
包含功能“get
”: -
app.factory('ApiService', function($http) {
var get = function(url) {
if (url.indexOf('?') === -1) {
url = url + '?debug=true';
} else {
url = url + '&debug=true';
}
return $http({
method: 'GET',
url: url
}).then(function(response) {
return response;
})
}
这是单元测试代码:
describe('Service: ApiService', function() {
var apiServiceObj, mockHttpBackend;
// load the service's module
beforeEach(module('icrmappApp'));
beforeEach(function() {
module(function($provide) {
$provide.service('ApiService', function() {
this.get = jasmine.createSpy('get');
});
});
});
beforeEach(inject(function($httpBackend, ApiService) {
apiServiceObj = ApiService;
mockHttpBackend = $httpBackend;
mockHttpBackend.when('GET', 'icrm/v1/agents/status')
.respond([
{"id": 1},
{"agentId": 1254167},
{"status": 0},
{"lastActivityTime": 1436428713000},
{"activityTimeInSecs": 145}
])
}));
it('.get must return correct mock data', function() {
/*
var result = apiServiceObj.get('icrm/v1/agents/status');
expect(result).toBe([
{"id": 1},
{"agentId": 1254167},
{"status": 0},
{"lastActivityTime": 1436428713000},
{"activityTimeInSecs": 145}
]);
*/
mockHttpBackend.expectGET('icrm/v1/agents/status').respond(function(){
return
[
{"id": 1},
{"agentId": 1254167},
{"status": 0},
{"lastActivityTime": 1436428713000},
{"activityTimeInSecs": 145}
]
});
});
});
模拟$httpBackend
按预期正常工作。 (代码不在单元测试的评论中)。
但是当通过另一个服务调用http模拟不起作用时(代码在单元测试用例的注释中)。
我只有3天的时间进行单元测试并且进行了相当多的搜索。
请指导我完成概念错误。