gpt4 book ai didi

reactjs - 使用 RequireJS 依赖项测试 es6 模块时 Jest 中的 "Define is not defined"

转载 作者:行者123 更新时间:2023-12-03 13:16:49 25 4
gpt4 key购买 nike

我有一个 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 {};
});

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

我在 package.json 的 jest 配置中使用 babel-jest 作为我的 scriptPreprocessor。我正在使用 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's transform configuration将您的实现包装在 RequireJS 到 ES6 转换器中。

关于reactjs - 使用 RequireJS 依赖项测试 es6 模块时 Jest 中的 "Define is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com