আমার একটি 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']
)
আমি ডিআই পরীক্ষা করতে পারি যে এটি কাজ করছে:
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); })
তবে পরবর্তীকালে ডিআই দ্বারা তৈরি করা পরিষেবাটি সকলের মতো বন্ধ করে দেওয়া হবে বলে মনে হচ্ছে।
কেউ কি জানেন যে আমি কীভাবে আমার ইউনিট পরীক্ষার জন্য ইঞ্জেকশন করা পরিষেবাগুলি উপহাস করতে পারি?
ধন্যবাদ
ডেভিড