如何将外部 JS 从 CDN 注入 Jest 单元测试?

IT技术 unit-testing reactjs npm jestjs
2021-04-29 05:08:23

我有使用 npm 和 webpack 的 React 应用程序。我正在尝试为其添加单元测试。

我正在使用 index.html 中包含的 CDN 中的 jQuery,而不是使用节点module。

我在Test1添加了单元测试用例的组件中使用了 jQuery

现在,当我执行测试用例时,我收到错误消息,说 ReferenceError: $ is not defined 我知道 Jest 无法解决它,因为我没有在 Component.js 中导入 jQuery 导入。

问题是,如何让 Jest 知道外部 JS?

2个回答

我们可以利用“setupFiles”配置来允许 Jest 在开始执行测试之前执行所有所需的脚本/库/module。

创建一个文件并将其添加到 "setupFiles": ["path/to/setup.js"] 并将您的库包含在其中。

例如, global.jQuery = global.$ = require('path/to/jQuery')

在 Jest github repo 上找到我的查询

有几种方法可以实现这一点。我更喜欢使用Require.js,尽管您可能已经在使用其他打包程序,如 Browserify 或 Webpack——这也应该可以工作。Require.js 的一个很好的快速入门是这个示例项目。简而言之,用你的 CDN 文件设置 Require.js,在你的前端引用捆绑的结果,将 Require.js 挂接到你的测试中,然后require()就像你做其他节点module一样。