Вы можете просто автоматически смоделировать модуль, используя jest.mock
:
jest.mock('common/js/browser-utils');
Документы, вероятно, можно было бы улучшить с помощью лучшего описания того, что означает "автоматически смоделированная версия", но в результате Jest
сохраняет поверхность API модуля неизменной, заменяя реализацию пустой mock функции .
Полный пример
браузерный utils.js
export const openBrowser = () => { /* do something */ };
code.js
import { openBrowser } from './browser-utils';
export const func = () => {
/* do stuff */
openBrowser();
/* do other stuff */
}
code.test.js
jest.mock('./browser-utils'); // create an auto-mock of the module
import { openBrowser } from './browser-utils'; // openBrowser is already an empty mock function
import { func } from './code';
test('func', () => {
func();
expect(openBrowser).toHaveBeenCalled(); // Success!
});
Бонус: макет одиночной функции
Чтобы смоделировать одну функцию, вы можете использовать jest.spyOn
следующим образом:
import * as browserUtils from './browser-utils';
import { func } from './code';
test('func', () => {
const spy = jest.spyOn(browserUtils, 'openBrowser');
spy.mockImplementation(); // replace implementation with empty mock function (optional)
func();
expect(spy).toHaveBeenCalled(); // Success!
});