मेरे पास एक 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();
});
});
यह साबित हुआ कि सेवा को डीआई फ्रेमवर्क द्वारा बनाया जा सकता है, हालांकि इसके बाद मैं यूनिट को परीक्षण करना चाहता हूं, जिसका अर्थ है कि इंजेक्शन वाली वस्तुओं का मजाक उड़ाना।
मैं यह कार्य कैसे करूं?
मैंने अपने मॉक ऑब्जेक्ट्स को मॉड्यूल में डालने की कोशिश की है, जैसे
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 द्वारा बनाई जा रही सेवा को रोकने के लिए लगता है।
क्या किसी को पता है कि मैं अपनी यूनिट परीक्षणों के लिए इंजेक्शन सेवाओं का मजाक कैसे उड़ा सकता हूं?
धन्यवाद
डेविड