如何在 Jest 中测试使用 browserify-shim global 的文件?

Posted

技术标签:

【中文标题】如何在 Jest 中测试使用 browserify-shim global 的文件?【英文标题】:How to test files that use browserify-shim global's in Jest? 【发布时间】:2015-06-28 23:49:15 【问题描述】:

我正在通过脚本标签下载谷歌地图 API v3,并使用以下(相关)package.json 配置将依赖项添加到我的模块中:

"browserify-shim": 
   "google": "global:google"

我可以在我的文件中添加以下依赖项:

var google = require('google');

当我在浏览器中运行我的代码时,它运行良好。 问题是,当我使用 Jest 运行测试时,它告诉我找不到“google”模块:

Error: /src/app/assets/javascripts/__tests__/helpers-test.js: Cannot find module 'google' from '/src/app/assets/javascripts/__tests__'

注意:

我正在测试的文件中需要此依赖项,而不是测试本身。我觉得这很令人困惑,因为我认为 Jest 会模拟所有依赖项,除非另有说明,但据我所知,它首先需要在模拟之前正确满足依赖项。

关于我缺少什么或应该采取什么方法的任何想法?

【问题讨论】:

【参考方案1】:

您需要在 package.json 中正确地为“google”起别名,请参阅here。

【讨论】:

也许我对别名有些不理解。在您提供的链接中,别名示例中使用了一个文件,但 google maps api 是通过 ascript 标签加载的(我不能只下载它,因为它只通过更多脚本标签下载缺少的组件)。

以上是关于如何在 Jest 中测试使用 browserify-shim global 的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从代码覆盖率数字中排除 browserify 生成的代码?

如何在 TypeScript 中使用 Jest 和 Knex 进行测试?

如何使用 Jest 在 React Native 中测试警报

如何使用 Jest 测试 Reflux 动作

如何使用 Jest 测试样式

如何使用 jest 在 nuxt.js 中测试 head()