async
अगले परीक्षण को तब तक शुरू करने की अनुमति नहीं देगा जब तक कि async
इसके सभी कार्य समाप्त नहीं हो जाते। क्या async
करता है कॉलबैक को एक ज़ोन में लपेटें, जहां सभी अतुल्यकालिक कार्यों (जैसे setTimeout
) को ट्रैक किया जाता है। एक बार जब सभी अतुल्यकालिक कार्य पूरे हो जाते हैं, तो async
पूरा हो जाता है।
यदि आपने कभी भी जैस्मीन के साथ कोणीय के बाहर काम किया है, तो आपने done
कॉलबैक में पास होते हुए देखा होगा
it('..', function(done) {
someAsyncAction().then(() => {
expect(something).toBe(something);
done();
});
});
यहां, यह मूल जैस्मीन है, जहां हम जैस्मीन को बताते हैं कि इस परीक्षण को पूरा होने में देरी होनी चाहिए done()
। अगर हमने फोन नहीं किया done()
और इसके बजाय यह किया:
it('..', function() {
someAsyncAction().then(() => {
expect(something).toBe(something);
});
});
परीक्षण अपेक्षा से पहले भी पूरा हो जाएगा, क्योंकि परीक्षण के समकालिक कार्यों को पूरा करने के बाद वादा हल हो जाता है।
कोणीय (एक जैस्मीन वातावरण में) के साथ, कोणीय वास्तव done
में पर्दे के पीछे कॉल करेगा जब हम उपयोग करते हैं async
। यह ज़ोन में सभी अतुल्यकालिक कार्यों का ट्रैक रखेगा, और जब वे सभी समाप्त हो done
जाएंगे , तो उन्हें पर्दे के पीछे बुलाया जाएगा।
TestBed
कॉन्फ़िगरेशन के साथ आपके विशेष मामले में , आप इसका उपयोग आम तौर पर तब करते हैं जब आप चाहते हैं compileComponents
। मैं शायद ही कभी ऐसी स्थिति में भागता हूं जिसमें मुझे इसे अन्यथा कहना होगा
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyModule],
schemas: [NO_ERRORS_SCHEMA],
})
.compileComponent().then(() => {
fixture = TestBed.createComponent(TestComponent);
});
}));
एक घटक का परीक्षण करते हैं जो उपयोग करता है templateUrl
(यदि आप वेबपैक का उपयोग नहीं कर रहे हैं), तो कोणीय को टेम्पलेट प्राप्त करने के लिए XHR अनुरोध करने की आवश्यकता होती है, इसलिए घटक का संकलन अतुल्यकालिक होगा। इसलिए हमें परीक्षण जारी रखने से पहले हल करने तक इंतजार करना चाहिए।
async
तो यह आवश्यक नहीं है। जब आप उपयोग कर रहे हैंtemplateUrl
, यह है। हालाँकि,async
इनलाइन-टेम्पलेट घटक को "ब्रेक" नहीं करेगा। क्या आपको लगता है कि यह कहना सुरक्षित है किasync
हर परीक्षा के लिए एक डिफ़ॉल्ट का उपयोग किया जा सकता है ?