AngularJS $リソースサービスがテストのためにmockcedされる方法について混乱しています。 $ httpBackendサービスを使用するには2つの方法があります。 (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();
}));
});
});
最初の方法は、直接のに対しモジュールを使用して、なぜ私は理解していません2番目の方法はです。angular.mock.moduleです。そして、httpBackendサービスは異なった方法で注入されます。 2番目の方法は、はるかに冗長です。最初の方法がうまくいくなら、2番目の方法のすべての冗長な点は何でしょうか?
'module'のは、' angular.mock.moduleのショートカットです'。後者は、CommonJSモジュールとの競合を避けるために使用できます。 'beforeEach'は、同じサービスが複数の仕様で使用されることになっている場合に使用されます。 – estus
ありがとうございます。しかし、_beforeEach_については理解していますが、最初のケースでは_inject(function($ httpBackend)_)を使用するだけでよく、2番目のケースでは_angular.mock.inject(function($ injector)_は中古。 – user5080246