सबसे अच्छा तरीका है सही ढंग से निम्न उदाहरण उपहास करने के लिए क्या है का उपयोग करते हुए एक ही मॉड्यूल में कार्यों उपहास करने के लिए?कैसे हंसी
समस्या यह है कि आयात समय के बाद, foo
मूल अनमॉक bar
के संदर्भ को संदर्भित करता है।
module.js:
export function bar() {
return 'bar';
}
export function foo() {
return `I am foo. bar is ${bar()}`;
}
module.test.js:
import * as module from '../src/module';
describe('module',() => {
let barSpy;
beforeEach(() => {
barSpy = jest.spyOn(
module,
'bar'
).mockImplementation(jest.fn());
});
afterEach(() => {
barSpy.mockRestore();
});
it('foo',() => {
console.log(jest.isMockFunction(module.bar)); // outputs true
module.bar.mockReturnValue('fake bar');
console.log(module.bar()); // outputs 'fake bar';
expect(module.foo()).toEqual('I am foo. bar is fake bar');
/**
* does not work! we get the following:
*
* Expected value to equal:
* "I am foo. bar is fake bar"
* Received:
* "I am foo. bar is bar"
*/
});
});
धन्यवाद!
संपादित करें: मैं बदल सकता है:
export function foo() {
return `I am foo. bar is ${bar()}`;
}
export function foo() {
return `I am foo. bar is ${exports.bar()}`;
}
के लिए, लेकिन यह पी है। हर जगह करने के लिए मेरी राय में बदसूरत:/
मैं आम तौर पर, निर्भरता इंजेक्शन के एक प्रशंसक नहीं हूँ जब से तुम अनुमति दे रहे हैं कोड कैसे लिखा जाता है बदलने के लिए परीक्षण। ऐसा कहा जा रहा है, यह वर्तमान उच्च वोट वाले उत्तर से बेहतर है जो बहुत बदसूरत है – Sean