Я видел этот вопрос , но никто не ответил на него так прямо, как хотелось бы, поэтому здесь мы снова go:
Как мне высмеивать звонки на 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
- это какая-то зарезервированная вещь, которую я не могу высмеять.
Есть идеи? Никаких обходных путей, пожалуйста.