开玩笑:模拟require.resolve调用

时间:2020-02-07 05:23:19

标签: jestjs

我见过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是我无法嘲笑的某种保留事物。

有什么想法吗?请没有解决方法。

0 个答案:

没有答案