Как заставить Jest находить модули, импортированные в компоненты?

Когда я пытаюсь запустить npm jest, тестовый набор не запускается и выдает следующее сообщение об ошибке:

Cannot find module 'app/utils' from 'MoreModal.js'

          1 | import React from 'react';
          2 | import { Link } from 'react-router';
        > 3 | import { fn, api } from 'app/utils';

Моя шутливая конфигурация

"jest": {
        "setupTestFrameworkScriptFile": "<rootDir>/js/__tests__/setup/setupEnzyme.js",
        "testPathIgnorePatterns": ["<rootDir>/js/__tests__/setup/"],
    },

Я пробовал возиться с moduleDirectories, но это ничего не дает.

Моя настройка ферментов

Enzyme.configure({ adapter: new Adapter() });

Тест:

describe('<MoreModal />', () => {
    describe('render()', () => {
        test('renders the component', () => {
            const wrapper = shallow(<MoreModal />);
            const component = wrapper.dive();

            expect(toJson(component)).toMatchSnapShot();
        })
    })
})

Как мне получить шутку, чтобы правильно найти модули в компоненте?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
870
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В вашем сборщике, вероятно, есть что-то настроенное для разрешения, чтобы app/utils работал таким образом.

Если вы используете Webpack, https://www.npmjs.com/package/jest-webpack-resolver поможет вам подключить Jest для использования тех же правил разрешения.

Спасибо большое; это устранило ошибку. Теперь я получаю сообщение об ошибке типа, касающееся createStore - TypeError: не удается прочитать свойство «применить» неопределенного значения. Какие-либо предложения?

SJC 21.08.2018 13:48

Пожалуйста, задайте это как новый вопрос с включением полной ошибки, трассировки и соответствующего кода :)

AKX 21.08.2018 13:49

Вы можете попробовать следующее:

"jest":{
    "modulePaths": [
        "<rootDir>/app"
    ],
    "moduleDirectories": [
        "app"
    ]
}

Согласно Документация Jest:

An alternative API to setting the NODE_PATH env variable, modulePaths is an array of absolute paths to additional locations to search when resolving modules. Use the string token to include the path to your project's root directory. Example: ["/app/"].

Также возможно, что ваш сборщик разрешает ваши модули относительно другого каталога, что очень хорошо упоминается @AKX. Находится "app / utils" в корневой папке вашего проекта или внутри другого? В этом случае ваша конфигурация шутки должна соответствовать конфигурации вашего сборщика.

Другие вопросы по теме