Saya memiliki layanan AngularJS tertulis dan saya ingin mengujinya.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
File app.js saya terdaftar sebagai berikut:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Saya dapat menguji DI bekerja seperti itu:
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();
});
});
Ini membuktikan bahwa layanan dapat dibuat oleh kerangka DI, namun selanjutnya saya ingin menguji layanan unit, yang berarti mengejek objek yang diinjeksi.
Bagaimana cara saya melakukan ini?
Saya sudah mencoba memasukkan objek tiruan saya ke dalam modul, misalnya
beforeEach(module(mockNavigationService));
dan menulis ulang definisi layanan sebagai:
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); })
Tapi yang terakhir tampaknya menghentikan layanan yang dibuat oleh DI seperti semua.
Adakah yang tahu bagaimana saya bisa mengejek layanan yang disuntikkan untuk tes unit saya?
Terima kasih
David