Работает ли Jest AutoMocking при тестировании компонентов React?

Мое ограниченное количество тестов, кажется, подсказывает, что ответ отрицательный. Я пишу модульный тест для компонента React родительского уровня (также известного как представление контроллера), который зависит от магазина. Однако Jest не предоставляет автоматический макет для магазина, как предполагает документация, а вместо этого вызывает реальную реализацию.

Это ошибка или это сделано намеренно? Если последнее, следует ли сделать вывод, что модульное тестирование реагирующих компонентов нежелательно?

Редактировать 1

Автомобилизация отлично работает при тестировании модуля CommonJs; это просто не работает для реагирующих компонентов.


person Mitch A    schedule 12.03.2015    source источник
comment
Вы из-за каких-либо изменений отключили функцию автозапуска?   -  person Henrik Andersson    schedule 12.03.2015
comment
Нет, но, чтобы быть уверенным, я явно включил его через jest.autoMockOn (), но безрезультатно.   -  person Mitch A    schedule 12.03.2015
comment
@MitchA удачи на этом? Я сталкиваюсь с тем же. Даже с jest.autoMockOn() на самом деле ничего не издевается.   -  person lobati    schedule 04.05.2015
comment
Нет обновлений, я в восторге. Автомобилизация работает только при тестировании компонентов, отличных от React.   -  person Mitch A    schedule 05.05.2015
comment
Вы используете сценарий кофе? У Jest есть проблема, из-за которой при вызове jest.dontmock он не имитирует файлы сценария кофе. В этом случае вы можете использовать jest.requireActual вместо   -  person PhilVarg    schedule 10.05.2015
comment
В моем приложении есть автоматические имитирующие компоненты Jest, и мне не нужно делать ничего особенного. В любом случае, вы могли бы поделиться кодом, чтобы лучше понять, что может происходить?   -  person Crob    schedule 11.05.2015
comment
Можете ли вы предоставить ограниченный тестовый пример? например в том числе в магазине и как вы это требуете? Мне не удалось повторить это в моем ограниченном тестировании.   -  person Nick Tomlin    schedule 16.05.2015


Ответы (1)


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

Извлечь вспомогательные методы

Извлеките методы, которые выполняют логику, например. сопоставление, фильтрация и т. д. с модулем Utils в другом файле. Затем протестируйте модуль Utils вместо компонента React. Таким образом вы уменьшите сложность тестирования.

То же самое и с магазинами ... Попробуйте запустить всю логику в модулях Utils. Уход из магазинов с собственными методами только для геттеров и сеттеров.

Не забудьте разблокировать ключ Зеркало и Диспетчер

При управлении константами с помощью KeyMirror очень легко забыть отключить этот модуль. Магазины обычно используют множество констант для ActionTypes.

То же самое касается зависимостей Dispatcher и EventEmitter.

person cuadraman    schedule 17.05.2015