使用 babel-plugin-import 测试 Jest

Test Jest with babel-plugin-import

Jest 由于 babel-plugin-import 而中断。我在 Ant Design 中使用 .less 样式,我认为这是造成这种情况的原因。我是 Jest 库的新手,所以我不确定导入或解决该问题的正确方法?

例子:

Test Suite failed to run
Cannot find module 'antd/lib/skeleton/style' from 'index.js'

.babelrc 文件

 "plugins": [
    ["import", { "libraryName": "antd", "style": true }],

我尝试了很多解决方案,例如 babel-jest、moduleNameMapper 等,但很有可能我没有正确使用它们。

正确答案是:

在 .babelrc 中:

在 "env" 下面的 .babelrc 中将生产、开发和 "test" 分开。在生产和开发中,保持 babel-plugin-import 不变。在 "test" 上,确保将其删除(Jest 无法处理)。

在Package.json

欢迎您在此文件中配置 Jest,但最重要的是在您的 NPM 脚本上进行测试,您将其传递给 NODE_ENV=test jest 以便它设置 babel 将要访问的正确环境参考。

Docker/Virtualenv/Kubernetes 用户

最后,如果您使用的是 Docker/Kubernetes 或某种在本地计算机之外的任何位置安装了软件包的工具,请确保这些软件包确实已安装.....我忘记了,当我从 "test" 中删除了 babel-plugin-import 并开始看到 antd is undefined 的错误,这让我挠了挠头。我一意识到这是因为 Ant Design 仅安装在我的 Kubernetes 节点上,而不是实际上我的计算机上 运行 命令。愚蠢的错误,但当您看到错误代码数小时后很容易犯。