मुझे एक कोणीय सेवा कहा जाता है 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
और मेरा परीक्षण निष्पादित करने में बहुत लंबा समय ले रहा है (लगभग 5 s)।
क्या कोई मुझे कुछ स्पष्टीकरण के साथ अपने कोड का काम करने का उदाहरण प्रदान करने में मदद कर सकता है?
Jest
उम्मीद है बहुत आम है, जबकि डिबगिंग और कुछ समय चर का निरीक्षण करने के लेने -।
afterEach
कदम था जो डेटाबेस को साफ कर रहा था ( deleteMany
विधि का उपयोग करके )। jest.setTimeout(30000);
इस beforeAll
विधि में जोड़ने से मेरे लिए यह तय हो गया है - मैं अनुमान लगा रहा हूं क्योंकि डेटाबेस हटाना एक नेटवर्क कॉल है (शर्त के अंदर), यह कभी-कभी 3 सेकंड से अधिक समय ले रहा था और फेंक रहा था।