如何从 CDN 注入外部 JS 到 Jest 单元测试?
How to inject external JS from CDN to Jest unit testing?
我有使用 npm 和 webpack 的 React 应用程序。我正在尝试为其添加单元测试。
我正在使用 index.html 中包含的 CDN 中的 jQuery,而不是使用节点模块。
我在添加了单元测试用例的组件 Test1
中使用 jQuery。
现在,当我执行测试用例时,我收到错误提示
ReferenceError: $ is not defined
我知道 Jest 无法解决它,因为我没有导入 jQuery import in Component.
问题是,如何让Jest知道外部JS?
有几种方法可以实现这一点。我更喜欢使用 Require.js, though you may already be using another bundler like Browserify or Webpack—that should work too. A good quick-start with Require.js is this 示例项目。简而言之,使用您的 CDN 文件设置 Require.js,在您的前端引用捆绑结果,将 Require.js 挂接到您的测试中,然后 require()
它们就像您对其他节点模块所做的那样.
我们可以利用 "setupFiles" configuration 让 Jest 在开始执行测试之前执行所有需要的脚本/库/模块。
创建文件并将其添加到 "setupFiles":["path/to/setup.js"] 并将您的库包含在其中。
例如,
global.jQuery = global.$ = require('path/to/jQuery')
请找到我在 Jest github 存储库上发布的 query。
我有使用 npm 和 webpack 的 React 应用程序。我正在尝试为其添加单元测试。
我正在使用 index.html 中包含的 CDN 中的 jQuery,而不是使用节点模块。
我在添加了单元测试用例的组件 Test1
中使用 jQuery。
现在,当我执行测试用例时,我收到错误提示
ReferenceError: $ is not defined
我知道 Jest 无法解决它,因为我没有导入 jQuery import in Component.
问题是,如何让Jest知道外部JS?
有几种方法可以实现这一点。我更喜欢使用 Require.js, though you may already be using another bundler like Browserify or Webpack—that should work too. A good quick-start with Require.js is this 示例项目。简而言之,使用您的 CDN 文件设置 Require.js,在您的前端引用捆绑结果,将 Require.js 挂接到您的测试中,然后 require()
它们就像您对其他节点模块所做的那样.
我们可以利用 "setupFiles" configuration 让 Jest 在开始执行测试之前执行所有需要的脚本/库/模块。
创建文件并将其添加到 "setupFiles":["path/to/setup.js"] 并将您的库包含在其中。
例如,
global.jQuery = global.$ = require('path/to/jQuery')
请找到我在 Jest github 存储库上发布的 query。