【问题标题】:Accessing bootstrap functionality in Jest testing在 Jest 测试中访问引导功能
【发布时间】:2017-07-20 21:10:19
【问题描述】:

所以我正在使用 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"
 ]

然后给我这个错误:

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

我已将 window.$global.$ 设置为 jQuery,看看这是否有助于解决我的问题,但似乎也无济于事,在我的 beforeTest.js 文件中导入引导模块也无济于事。

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

【问题讨论】:

  • 你试过在你的beforeTest中做require('../app/common/js/jquery-3.1.1.min.js');require('../app/common/js/bootstrap.min.js')吗?
  • @SimenB 是的,这也给了我Bootstrap's Javascript requires jQuery. 错误。 FWIW,我可以通过创建一个伪造的 jquery 函数来欺骗该功能。
  • 这个问题解决了吗?现在遇到同样的问题。
  • @Siavash 我从来没有一个好的解决方案来添加实际的 jQuery。我最终用modal 和其他我需要的函数来存根一个假版本,以使测试通过。
  • 几年后回到这个问题 - 我会说我从来没有发现我遇到的确切问题的问题,但我停止了该项目的工作,所以我不知道是否以下答案是正确的。由于无法验证,因此我不会将其标记为已回答,但似乎有些人已经成功了。我想我的问题可能还有一些我当时没有考虑到的其他范围界定问题。

标签: jquery twitter-bootstrap reactjs jestjs enzyme


【解决方案1】:

这对我有帮助:

$.fn.modal = jest.fn();

模拟还将避免一个包含用于测试套件的 Bootstrap。

【讨论】:

  • 这就是我要找的东西!
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2020-09-14
  • 2021-08-30
相关资源
最近更新 更多