【发布时间】: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