আমার কাছে একটি কৌণিক পরিষেবা রয়েছে requestNotificationChannel:
app.factory("requestNotificationChannel", function($rootScope) {
var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_";
function deleteMessage(id, index) {
$rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index });
};
return {
deleteMessage: deleteMessage
};
});
আমি জুঁই ব্যবহার করে এই পরিষেবাটি পরীক্ষা করার চেষ্টা করছি:
"use strict";
describe("Request Notification Channel", function() {
var requestNotificationChannel, rootScope, scope;
beforeEach(function(_requestNotificationChannel_) {
module("messageAppModule");
inject(function($injector, _requestNotificationChannel_) {
rootScope = $injector.get("$rootScope");
scope = rootScope.$new();
requestNotificationChannel = _requestNotificationChannel_;
})
spyOn(rootScope, '$broadcast');
});
it("should broadcast delete message notification", function(done) {
requestNotificationChannel.deleteMessage(1, 4);
expect(rootScope.$broadcast).toHaveBeenCalledWith("_DELETE_MESSAGE_", { id: 1, index: 4 });
done();
});
});
আমি জেসমিনে অ্যাসিক্রোনাস সমর্থন সম্পর্কে পড়েছি, তবে জাভাস্ক্রিপ্টের সাথে ইউনিট টেস্টিংয়ের পরিবর্তে আমি নতুন হয়েছি এটি কার্যকর করতে পারে নি।
আমি একটি ত্রুটি পেয়েছি:
Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL
এবং আমার পরীক্ষাটি কার্যকর করতে প্রায় দীর্ঘ সময় নিচ্ছে (প্রায় 5s)।
কেউ আমাকে কিছু ব্যাখ্যা দিয়ে আমার কোডের কাজের উদাহরণ প্রদান করতে সহায়তা করতে পারেন?
Jestপ্রত্যাশার চেয়ে বেশি সময় নেয় - ডিবাগ করার সময় এবং ভেরিয়েবলগুলি পরিদর্শন করতে কিছুটা সময় নেওয়ার সময় খুব সাধারণ।
afterEachপদক্ষেপ ছিল যা ডাটাবেস সাফ করছিল ( deleteManyপদ্ধতিটি ব্যবহার করে )। পদ্ধতিটিতে যুক্ত jest.setTimeout(30000);করা beforeAllআমার কাছে এটি স্থির করে দিয়েছে বলে মনে হচ্ছে - আমি অনুমান করছি যেহেতু ডাটাবেস মুছে ফেলা একটি নেটওয়ার্ক কল (শর্তের অভ্যন্তরে), এটি কখনও কখনও 3 সেকেন্ডেরও বেশি সময় নেয় এবং নিক্ষেপ করে।