"定义未定义"在Jest中测试具有RequireJS依赖性的es6模块时

时间:2016-12-01 19:38:22

标签: reactjs webpack babeljs jestjs babel-jest

我有一个无法运行的Jest测试套件,因为它尝试测试的组件取决于RequireJS模块。这是我看到的错误:

import utils from 'private-npm-module';

该组件具有以下导入:

private-npm-module

define('utils', [], function() { return {}; }); 的设置如下:

MyComponent

当使用babel编译babel-jest并在浏览器中运行时,依赖项正常运行。此问题仅影响单元测试。如何让我的测试套件在具有RequireJS依赖性的组件上运行?

我在package.json的jest配置中使用scriptPreprocessor作为我的from string import punctuation def vocab_filter(text, filter_vocab): txt = text.replace('\n', ' ').lower().split() out = [word for word in txt if word not in filter_vocab] return out 。我使用的是jest v0.15.1。

1 个答案:

答案 0 :(得分:9)

因此,Jest不支持RequireJS。在我的特定情况下,在MyComponent.test.js的顶部模拟我的依赖是最简单也是最合适的:

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

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

这样,当加载MyComponent时,其依赖关系已经被模拟,因此它不会尝试加载RequireJS模块。

如果您确实需要为测试加载RequireJS模块,可以使用jest's transform configuration将您的实现包装在RequireJS到ES6转换器中。