Шутка: можно ли автоматически заблокировать импортированную функцию?

#javascript #unit-testing #jestjs #mocking

Вопрос:

Я знаю, что можно автоматически блокировать модули, чтобы вам не приходилось создавать для них макетные реализации.

Подобный этому:

file.test.js

 jest.mock('./my-player.js');

import myPlayer from './my-player'
 

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


Но что, если бы у меня был файл, в который я импортировал функцию:

other.test.js

 import { getData }  from './helpers';
 

должен ли я создать для этого макет реализации или есть способ заблокировать это?

Комментарии:

1. jestjs.io/docs/configuration#automock-boolean

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

Ответ №1:

Вы можете автоматически издеваться над своими помощниками, вызывая jest.mock , а затем импортируя функции, необходимые для ваших тестов, т. е.

 jest.mock('./helpers');
import { getData }  from './helpers';
 

jest.mock автоматически имитирует экспортируемые функции.