测试具有RequireJS依赖项的es6模块时,在Jest中“未定义定义”
我有一个无法运行的Jest测试套件,因为它要测试的组件取决于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
使用babel进行编译并在浏览器中运行时,依赖项将正确运行。此问题仅影响单元测试。如何使我的测试套件在具有RequireJS依赖项的组件上运行?
我用babel-jest
我的scriptPreprocessor
中的package.json的玩笑配置。我正在使用jest v0.15.1。
回答:
因此,Jest不支持RequireJS。在我的特定情况下,在以下位置模拟我的依赖关系是最简单,最合适的方法MyComponent.test.js
:
jest.mock('private-npm-module', () => { // mock implementation
})
import MyComponent from '../../components/MyComponent';
这样,在MyComponent
加载时,其依赖关系已经被模拟,因此它不会尝试加载RequireJS模块。
如果确实需要为测试加载RequireJS模块,则可以使用jest的transform
配置将您的实现包装在RequireJS to ES6转换器中。
以上是 测试具有RequireJS依赖项的es6模块时,在Jest中“未定义定义” 的全部内容, 来源链接: utcz.com/qa/416167.html