在 Jest 测试中访问引导程序功能

wes*_*byb 5 jquery twitter-bootstrap reactjs jestjs enzyme

所以我正在使用 Jest & Enzyme 测试我的 React 组件,当我测试一个打开引导模式的组件时,我收到以下错误:

TypeError: $(...).modal is not a function

有道理,我还没有在任何时候引用引导程序,所以我继续将以下内容添加到我的 package.json 中的 jest 对象中:

"setupFiles": [
  "./app/common/js/jquery-3.1.1.min.js",
  "./app/common/js/bootstrap.min.js",
  "./__mocks__/beforeTest.js"
 ]
Run Code Online (Sandbox Code Playgroud)

然后给了我这个错误:

Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.

我已经设置window.$global.$jQuery 以查看这是否对我的问题有帮助,但它似乎也没有帮助,在我的beforeTest.js文件中导入引导模块也没有帮助。

我不需要测试模态的功能,我只需要错误消失。所以我希望找到一种方法来加载引导程序,以便我可以运行$(...).modal. bootstrap 甚至可以在这种环境中工作吗?

小智 6

这对我有帮助:

$.fn.modal = jest.fn();
Run Code Online (Sandbox Code Playgroud)

模拟还将避免将 Bootstrap 包含在测试套件中。