测试具有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

回到顶部