我有一个无法运行的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。
答案 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转换器中。