我很困惑AngularJS $資源服務應該被用於測試的方式。 我發現了兩種使用$ httpBackend服務的方法。 一種方式(從Pluralsight教程拍攝):
describe('test', function() {
beforeEach(module('name'));
it('text', inject(function($httpBackend) {
$httpBackend.expectGET("/url");
// some code
$httpBackend.flush();
});
}
的其他方式(從this SO answer複製):
describe('test', function() {
var $httpBackend;
beforeEach(angular.mock.module('name'));
beforeEach(function() {
angular.mock.inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
})
});
describe('text', function() {
it('text', inject(function (User) {
$httpBackend.expectGET('/url')
.respond([{
property: 'test'
}]);
// Some code
$httpBackend.flush();
}));
});
});
我不明白爲什麼第一種方式,使用模塊直接而第二種方法是angular.mock.module。然後httpBackend服務被注入如此不同。第二種方式更加冗長。如果第一種方法有效,第二種方式的所有冗長點有什麼意義?
'module'是'angular.mock.module快捷方式'。後者可用於避免與CommonJS模塊衝突。如果相同的服務應該用於多個規格,則使用'beforeEach'。 – estus
謝謝。但至於_beforeEach_,我明白,但我不明白爲什麼在第一種情況下足夠使用_inject(function($ httpBackend)_並且在第二種情況下,_angular.mock.inject(function($ injector)_ is用過的。 – user5080246