我正在使用Jest创建Swiper的单元测试。
下面是我的代码:
https://codesandbox.io/s/swiper-default-react-forked-v0dnz?file=/src/App.test.jsx
● Test suite failed to run
Cannot find module 'swiper/react' from 'src/App.jsx'
Require stack:
src/App.jsx
src/App.test.jsx
1 | import React from "react";
2 | // Import Swiper React components
> 3 | import { Swiper, SwiperSlide } from "swiper/react";
| ^
4 |
5 | // Import Swiper styles
6 | import "swiper/css";
at Resolver.resolveModule (node_modules/jest-resolve/build/resolver.js:322:11)
at Object.<anonymous> (src/App.jsx:3:1)
这个错误一直被报告,但是程序可以正常运行,有谁能帮我解决这个问题吗?
4条答案
按热度按时间u4dcyp6a1#
我想您在使用Swiper 7或更新版本时遇到了问题,因为Jest还不支持ESM包。
因此,即使它不是最佳解决方案,您也可以通过将其降级为Swiper 6来解决它
运行以下命令:
并以如下方式导入:
ny6fqffe2#
这似乎对我很有效(Swiper v8):
(in软件包. json)
(and也可以将其添加到
transformIgnorePatterns
)smdnsysy3#
如果你不想测试Swiper v8的功能,但是想测试组件中的其他特性,可以尝试在jest文件中添加以下代码行:
为nextjs工作,没有抱怨。也许不是最好的方式,但对我来说已经足够了。
ulydmbyx4#
我正在使用Swiper 8.4.2,这对我来说是有效的,而在Jest中使用Swiper。
TL;DR只需给予Jest配置
这是一个适合我的配置。
关于配置的重要事项
有些东西可以忽略,因为它们是NX控制的monorepo所特有的,但是有几件事在这里很重要。所以忽略“nrwl”和“nx”的细节,因为我希望这部分关于变压器的内容已经为你的项目配置好了,不管你是使用NX还是其他东西。
我得到了什么错误?
因此,运行测试首先会抛出错误“Jest遇到意外的标记”和“SyntaxError:代码中此行的意外标记“export '”:
错误的实际来源是Swiper包中的这一行:
将
swiper|ssr-window|dom7
添加到transformIgnorePatterns
解决了该问题。然后添加后,我得到了同样的错误,但此行:
上面的答案之一设法帮助我做到这一点,实际上是因为它涉及到“moduleNameMapper”属性。
因此,将其添加到配置中解决了此特定导入的问题:
希望这能帮助人们解决他们的问题,并实际了解配置的哪些部分解决了特定的问题。