我见过this question,但没有人像我所希望的那样直接回答,所以我们再次尝试:
require.resolve
的呼叫?所以,如果我有一个像这样的模块:
get-module.js
// just a simple example, don't get too caught up
export default getModuleLocation() {
return require.resolve('./my-module');
}
如何使我的require.resolve
通话返回其他内容?这是我尝试过的:
get-module.test.js
import getModule from './get-module';
let originalRequireResolve;
beforeAll(() => {
originalRequireResolve = require.resolve;
require.resolve = jest.fn();
});
afterAll(() => {
require.resolve = originalRequireResolve;
});
it('gets the module', () => {
// ? this does NOT work
require.resolve.mockReturnValueOnce('mock-module');
expect(getModule()).toBe('mock-module');
});
上面的代码不起作用,但是该示例很好地传达了我想做的事情。似乎require
是我无法嘲笑的某种保留事物。
有什么想法吗?请没有解决方法。