我有一个AngularJS / Jasmine单元测试,可以与AngularJS 1.0.7正常工作,但在Angular 1.2.2中不起作用:
servicesSpec.js
describe('services', function() {
beforeEach(module('workPadApp'));
describe('taskGateway', function() {
var sut;
beforeEach(inject(function(taskGateway) {
sut = taskGateway;
}));
describe('saving a task', function() {
it('GETs correctly', inject(function($httpBackend) {
$httpBackend.expectGET('/').respond({ foo : 'bar' });
sut.createTask({ taskRef : 'baz' });
$httpBackend.flush();
}))
})
})
})
app.js
var workPadApp = angular.module('workPadApp', ['workPadApp.services']);
services.js
angular.module('workPadApp.services', []).
factory('taskGateway', function($http, $q) {
return {
createTask : function(task) {
$http.get('/')
.success(function(response) {
console.log('success');
})
.error(function(response) {
console.log('error');
});
}
}
});
预期结果
当我使用AngularJS 1.0.7与Karma一起运行时,一切都很好:
日志:“成功”
Chrome 33.0.1750(Windows 7):执行1之1成功(0.179秒/0.03秒)
实际结果
但是,当我用AngularJS 1.2.2运行它时,得到以下输出:
Chrome 33.0.1750(Windows 7)服务taskGateway保存任务正确获取失败
Error: No pending request to flush ! at Error (native) at Function.$httpBackend.flush (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/lib/angular/angular-mocks.js:1195:34) at null.<anonymous> (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/unit/servicesSpec.js:91:18) at Object.invoke (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/app/lib/angular.js:3641:28) at workFn (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/lib/angular/angular-mocks.js:1778:20) Error: Declaration Location at window.jasmine.window.inject.angular.mock.inject (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/lib/angular/angular-mocks.js:1764:25) at null.<anonymous> (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/unit/servicesSpec.js:72:26) at null.<anonymous> (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/unit/servicesSpec.js:62:3) at null.<anonymous> (c:/Users/Mark/Documents/Grean/HHM/Src/HHMFrontend/test/unit/servicesSpec.js:8:2)
Chrome 33.0.1750(Windows 7):执行1之1(1失败)(0.349秒/ 0.133秒)
我看了$ httpBackend的文档,那里的示例使用了一种更加势在必行的使用$injector
服务的设置样式。
这让我感到惊讶,因为在1.0.7版中使用的声明式样式更加简洁。这真的是前进的唯一正确方法,还是我错过了一些东西?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句