前言
我碰到一个问题,我的jq插件配置的全局变量,现在需要测试单个组件,单元测试这个组件的时候里面使用jq的$全局变量,现在测试会报错:$ is not defined,异常如下:


我看vue-test官网文档里面可以通过localVue引入vuex、vue-router等,但由于jq是全局配置,不知道怎么引入
解决方案
方案一:
一开始我就想到了一种最不适合,但校验结果最快的解决方案,那就是直接在测试组件里面引入需要使用的插件包。
但是这样做会导致非常不好的结果:
测试组件引入了额外的第三方依赖包,而且这些依赖包无论是在生产还是测试环境都是冗余的。这也就意味着我们测试完还要手动删除,并且只要每一个测试的组件都依赖了第三方插件,那么我们都要这样做一遍。
毫无疑问,这种是最糟糕的方案,所以我选择毫不犹豫的pass掉
方案二
猜想:由于
vue-test是二次封装的jest,所有jest的某些配置在vue-test里面是可以使用的
这种方案是我目前采用的,也是比较适合的一种解决方案,操作步骤如下:
- 创建一个
setup.js启动文件,内容如下:// 其他第三方插件也可以追加到里面 const jquery = require('jquery') global.$ = jquery - 在
jest.config.js配置文件添加如下内容:setupFiles: [ './tests/unit/setup.js' // setup.js 启动文件的路径 ]
其他方案
由于本人询问过jest相关大佬,并且搜索的资料比较多,也了解了其他的解决方案:比如在单元测试里面添加jest.unmock('jQuery')https://www.it1352.com/1473034.html等
这种方案应该是可以,我google了好多都有说过这种方案,但是我的单元测试是用不了。
本文探讨了在单元测试中遇到的全局变量未定义的问题,通过引入jQuery插件来解决。提供了两种解决方案:直接在测试组件中引入插件(不推荐),以及在启动文件中设置全局变量并通过jest配置加载该文件。
887

被折叠的 条评论
为什么被折叠?



