Как смоделировать импорт по умолчанию, используя Jest - PullRequest
0 голосов
/ 13 ноября 2018

Как можно смоделировать функцию, которая импортируется внутри файла, который содержит функцию, которую я тестирую?

без помещения в папку mocks .

// FileIWantToTest.js
import { externalFunction } from '../../differentFolder';

export const methodIwantToTest = (x) => { externalFunction(x + 1) }

Мне нужно убедиться, что externalFunction вызывается и вызывается с правильными аргументами.

Кажется, что это очень просто, но в документации не описывается, как это сделать без насмешки над модулем для всех файлов в тесте, поместив насмешки в папку mocks .

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Один из самых простых подходов - импортировать библиотеку и использовать jest.spyOn, чтобы шпионить за методом:

import { methodIwantToTest } from './FileIWantToTest';
import * as lib from '../../differentFolder';  // import the library containing externalFunction

test('methodIwantToTest', () => {
  const spy = jest.spyOn(lib, 'externalFunction');  // spy on externalFunction
  methodIwantToTest(1);
  expect(spy).toHaveBeenCalledWith(2);  // SUCCESS
});
0 голосов
/ 14 ноября 2018

Решение: мне нужно принять вызов jest.mock вне любого теста или любой другой функции, потому что jest должен его поднять. Также для именованных экспортов, как в моем случае, я также должен использовать следующий синтаксис:

jest.mock('../../differentFolder', () => ({
  __esModule: true,
  externalFunction: jest.fn(),
 }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...