Tôi đã viết một dịch vụ AngularJS và tôi muốn thử nghiệm đơn vị nó.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
Tệp app.js của tôi đã đăng ký:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Tôi có thể kiểm tra DI đang hoạt động như vậy:
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();
});
});
Điều này đã chứng minh rằng dịch vụ có thể được tạo bởi khung DI, tuy nhiên tiếp theo tôi muốn kiểm tra đơn vị dịch vụ, có nghĩa là chế nhạo các đối tượng được đưa vào.
Làm thế nào để tôi làm điều này?
Tôi đã thử đưa các đối tượng giả của mình vào mô-đun, ví dụ:
beforeEach(module(mockNavigationService));
và viết lại định nghĩa dịch vụ thành:
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); })
Nhưng sau này dường như dừng dịch vụ do DI tạo ra.
Có ai biết cách tôi có thể giả mạo các dịch vụ được tiêm cho các bài kiểm tra đơn vị của tôi không?
Cảm ơn
David