का उपयोग करें jest.spyOn()
और spy.mockRestore()
।
const spy = jest.spyOn(console, 'warn').mockImplementation();
...
spy.mockRestore();
स्वीकृत उत्तर मूल को पुनर्स्थापित नहीं करता है console.warn()
और उसी फ़ाइल के अंदर अन्य परीक्षणों को "समझौता" करेगा (यदि console.warn()
अन्य परीक्षणों के अंदर उपयोग किया जाता है या कोड का परीक्षण किया जा रहा है)।
FYI करें यदि आप console.warn = jest.fn()
एक परीक्षण फ़ाइल में उपयोग करते हैं , तो यह अन्य परीक्षण फ़ाइलों को प्रभावित नहीं करेगा (उदाहरण के लिए कंसोल। अन्य परीक्षण फ़ाइलों में मूल मूल्य पर वापस आ जाएगा)।
सलाह: आप spy.mockRestore()
अंदर बुला सकते हैं afterEach()
/ afterAll()
यह सुनिश्चित करने के लिए कि यदि कोई परीक्षण क्रैश हो जाता है, तो भी वह उसी फ़ाइल से अन्य परीक्षणों से समझौता नहीं करेगा (उदाहरण के लिए उसी फ़ाइल के अंदर परीक्षण पूरी तरह से अलग हैं)।
पूर्ण उदाहरण:
const spy = jest.spyOn(console, 'warn').mockImplementation();
console.warn('message1');
console.warn('message2');
expect(console.warn).toHaveBeenCalledTimes(2);
expect(spy).toHaveBeenCalledTimes(2);
expect(console.warn).toHaveBeenLastCalledWith('message2');
expect(spy).toHaveBeenLastCalledWith('message2');
expect(spy.mock.calls).toEqual([['message1'], ['message2']]);
expect(console.warn.mock.calls).toEqual([['message1'], ['message2']]);
spy.mockRestore();
console.warn('message3');
expect(spy).toHaveBeenCalledTimes(0);
expect(spy.mock.calls).toEqual([]);
आप लिख नहीं सकते
console.warn = jest.fn().mockImplementation();
...
console.warn.mockRestore();
क्योंकि यह मूल को पुनर्स्थापित नहीं करेगा console.warn()
।
/! \ mockImplementationOnce()
आप के साथ अभी भी कॉल करने की आवश्यकता होगी spy.mockRestore()
:
const spy = jest.spyOn(console, 'warn').mockImplementationOnce(() => {});
console.warn('message1');
expect(console.warn).toHaveBeenCalledTimes(1);
expect(spy).toHaveBeenCalledTimes(1);
expect(console.warn).toHaveBeenLastCalledWith('message1');
expect(spy).toHaveBeenLastCalledWith('message1');
expect(spy.mock.calls).toEqual([['message1']]);
expect(console.warn.mock.calls).toEqual([['message1']]);
console.warn('message2');
expect(console.warn).toHaveBeenCalledTimes(2);
expect(spy.mock.calls).toEqual([['message1'], ['message2']]);
expect(console.warn.mock.calls).toEqual([['message1'], ['message2']]);
spy.mockRestore();
console.warn('message3');
expect(spy).toHaveBeenCalledTimes(0);
expect(spy.mock.calls).toEqual([]);
आप यह भी लिख सकते हैं:
const assert = console.assert;
console.assert = jest.fn();
...
console.assert = assert;