मुझे लगता है कि यह संभव नहीं है, लेकिन मैं वैसे भी पूछना चाहता हूं।
मैं यह परीक्षण करना चाहता हूं कि मेरा एक ईएस 6 मॉड्यूल एक विशेष तरीके से दूसरे ईएस 6 मॉड्यूल को कॉल करता है। जैस्मीन के साथ यह सुपर आसान है -
एप्लिकेशन कोड:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
और परीक्षण कोड:
//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';
describe('myModule', () => {
it('calls the dependency with double the input', () => {
spyOn(dependency, 'doSomething');
myModule(2);
expect(dependency.doSomething).toHaveBeenCalledWith(4);
});
});
Jest के समतुल्य क्या है? मुझे ऐसा लगता है कि ऐसा करना आसान है, लेकिन मैं अपने बालों को बाहर निकालने की कोशिश कर रहा हूं।
मैं जो निकटतम आया हूं , वह importएस को requireएस के स्थान पर बदल रहा है , और उन्हें परीक्षणों / कार्यों के अंदर ले जा रहा है। न तो ऐसी चीजें हैं जो मैं करना चाहता हूं।
// myModule.js
export default (x) => {
const dependency = require('./dependency'); // yuck
dependency.doSomething(x * 2);
}
//myModule-test.js
describe('myModule', () => {
it('calls the dependency with double the input', () => {
jest.mock('../dependency');
myModule(2);
const dependency = require('../dependency'); // also yuck
expect(dependency.doSomething).toBeCalledWith(4);
});
});
बोनस पॉइंट्स के लिए, मैं पूरी बात काम करना पसंद करूँगा जब फंक्शन अंदर dependency.jsडिफॉल्ट एक्सपोर्ट हो। हालाँकि, मुझे पता है कि डिफ़ॉल्ट निर्यात पर जासूसी काम नहीं करती है (या कम से कम मैं इसे काम करने के लिए कभी नहीं प्राप्त कर सकता), इसलिए मैं उम्मीद नहीं कर रहा हूं कि यह जेस्ट में भी संभव है।
importएस के लिएrequireएस ट्रांसपाइल एस के लिए जारी रखने में कोई आपत्ति नहीं है । फिर भी आगाह करने के लिए धन्यवाद।