2016-12-01 4 views
4

У меня есть тестовый набор Jest, который не запускается, потому что компонент, который он пытается проверить, зависит от модуля RequireJS. Вот ошибка я вижу:«Определение не определено» в Jest при тестировании модуля es6 с требованием RequireJS

FAIL __tests__/components/MyComponent.test.js 
    ● Test suite failed to run 

    ReferenceError: define is not defined 

     at Object.<anonymous> (node_modules/private-npm-module/utils.js:1:90) 

Компонент имеет следующий импорт:

import utils from 'private-npm-module'; 

И private-npm-module устанавливается следующим образом:

define('utils', [], function() { 
    return {}; 
}); 

Когда MyComponent является transpiled с babel и запустить в браузере, зависимость работает правильно. Эта проблема влияет только на модульный тест. Как я могу заставить свой тестовый пакет работать на компоненте с зависимостью RequireJS?

Я использую babel-jest как мой scriptPreprocessor в jest config.json. Я использую jest v0.15.1.

ответ

3

Таким образом, требование JS не поддерживается Jest. В моем конкретном случае, это было самым простым и наиболее подходящим, чтобы дразнить свою зависимость в верхней части MyComponent.test.js:

jest.mock('private-npm-module',() => { 
    // mock implementation 
}) 

import MyComponent from '../../components/MyComponent'; 

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

Если вам действительно нужно загрузить модуль RequireJS для вашего теста, возможно, вы сможете использовать jest's transform configuration для переноса вашей реализации в преобразователь RequireJS в ES6.