AngularJS 서비스가 작성되었으며 단위 테스트를 원합니다.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
내 app.js 파일에는 다음이 등록되어 있습니다.
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
DI가 다음과 같이 작동하는지 테스트 할 수 있습니다.
describe("Using the DI framework", function() {
beforeEach(module('fooServiceProvider'));
beforeEach(module('barServiceProvider'));
beforeEach(module('myServiceProvder'));
var service;
beforeEach(inject(function(fooService, barService, myService) {
service=myService;
}));
it("can be instantiated", function() {
expect(service).not.toBeNull();
});
});
이것은 서비스가 DI 프레임 워크에 의해 생성 될 수 있음을 입증했지만, 다음에 서비스를 단위 테스트하고 싶습니다. 즉, 삽입 된 객체를 조롱하는 것을 의미합니다.
어떻게해야합니까?
모의 객체를 모듈에 넣어 보았습니다.
beforeEach(module(mockNavigationService));
서비스 정의를 다음과 같이 다시 작성합니다.
function MyService(http, fooService, barService) {
this.somthing = function() {
// Do something with the injected services
};
});
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) { return new MyService($http, fooService, barService); })
그러나 후자는 DI에 의해 생성되는 서비스를 모두 중단하는 것 같습니다.
아무도 내 단위 테스트를 위해 주입 된 서비스를 모의 할 수있는 방법을 알고 있습니까?
감사
데이비드