单元测试依赖关系的角度服务
我有以下Jasmine单元测试:
describe('myService', function () {
var myService, $q;
// Instantiate the app
beforeEach(module('myApp'));
beforeEach(inject(function (_myService_, fileSystemService, $q) {
myService = _myService_;
spyOn(fileSystemService, 'listFiles').and.callFake(function () {
var deferred = $q.defer();
deferred.resolve('mockresult');
return deferred.promise;
});
}));
it('checks the number of outbound files', inject(function ($rootScope) {
var result;
myService.sendOutboundFiles2().then(function (res) {
result = res;
});
$rootScope.$digest();
expect(result).toBe('mockresult');
}));
});
哪个测试这个非常简单的服务功能:
sendOutboundFiles2() {
return fileSystemService.listFiles('Cached/Outbound').then(function(outfiles) {
return outfiles;
})
}
但是,当测试运行时,它会失败,并产生一个Error: Unexpected request: GET blahblahblah.html No more request expected at $httpBackend
错误,但我不知道为什么这个测试也没有服务依赖关系做$ httpBackend。
更多信息
如果我注释掉我现有的控制器测试,我得到这个错误:
如果我添加我的控制器测试,我得到这个错误:
因此,根据我添加或删除哪些测试, GET
错误中的HTML文件将发生更改。 但所有的控制器测试运行良好。 WTF?!?!?!??!?!?
这个问题是由Ionic热衷于将所有模板预取到缓存中造成的。 不知道为什么测试控制器时不会发生这种情况。 这个问题仅在我测试服务时出现。 任何方式,我发现这个线程:Karma测试在使用ui-router后中断,相关的修复是在注入任何依赖之前添加这个片段:
beforeEach(module(function($provide) {
$provide.value('$ionicTemplateCache', function(){} );
}));
这留下了$ ionicTemplateCache,并防止它尝试将所有ui路由器模板预加载到Ionic缓存中。
链接地址: http://www.djcxy.com/p/73389.html