我正在尝试为我创建的服务创建一些基本的测试覆盖率。这是我的服务:
App.factory('encounterService', function ($resource, $rootScope) {
return {
encounters: [],
encountersTotalCount: 0,
encountersIndex: 0,
resource: $resource('/encounters/:encounterId', {encounterId:'@encounterId'}, {
search: {
method: 'GET',
headers: {
'RemoteUser': 'jjjyyy',
'Content-Type': 'application/json'
}
}
}),
getMoreEncounters: function() {
var that = this;
that.resource.search({}, function(data) {
that.encountersTotalCount = data.metadata.totalCount;
_.each(data.encounters, function(encounter) {
that.encounters.push(encounter);
});
that.busy = false;
that.offset += 10;
$rootScope.$broadcast('encountersFetched');
});
}
};
});
这是我的测试:
describe('encounterService', function() {
var _encounterService, httpBackend;
beforeEach(inject(function(encounterService, $httpBackend) {
_encounterService = encounterService;
httpBackend = $httpBackend;
var url = 'encounters';
httpBackend.when('GET', url).respond([{}, {}, {}]);
}));
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('should return a list of encounters', function() {
_encounterService.getMoreEncounters();
httpBackend.flush();
expect(_encounterService.encounters.size).toBe(3);
});
});
我的测试正在运行,我的服务正在调用getMoreEncounters()
。在encounterService
内部我应该设置一些元数据并将我的数据分配给内部变量。这从未发生过。您可以在测试中看到响应,但结果不会分配给任何内容。我的代码有什么问题?
答案 0 :(得分:0)
如上所述tennisgent
:
我看到一些我认为应该抛出javascript错误的东西。
expect(_encounterService.encounters.size).toBe(3);
就是其中之一。 Javascript数组没有.size
属性。它的.length
。我获得
0
size
属性,因为它不存在。