reactjs - react css modules 导致快照测试失败
问题描述
该react-css-modules
包将呈现一个像这样的 html:
className="src-Comp-___style__navi-col___1-3yc6d"
但是哈希字符串 ( 3yc6d
) 会导致开玩笑快照上的错误:
<div
- className="src-Comp-TopcoderFooter-___style__navi-col___6dcta"
+ className="src-Comp-TopcoderFooter-___style__navi-col___3yc6d"
>
如您所见,哈希已更改,因此快照测试失败。
问题是我从 github 克隆了一个 repo,因此测试失败了。(当我添加拉取请求时它可能会失败。)
所以在我的电脑中生成的哈希值与回购所有者不同。(如果我重新运行测试,哈希不会改变。)
这个哈希背后的逻辑是什么,我怎样才能防止快照测试失败?
解决方案
react-css-modules库已弃用;和babel-plugin-react-css-modules他们推荐使用,已经有一段时间没有维护了,并且与最新版本的 Webpack 不兼容css-loader
(它负责 CSS 端的 CSS 名称转换;它决定了实际的该哈希背后的逻辑,您可以在此处找到)。
如果您需要该功能,我建议您使用我的 babel-plugin-react-css-modules 分支,我会保持最新,并与最新css-loader
版本兼容 :)
PS:是的,css-loader
从版本3.6.0
到当前的更新5.2.4
已经改变了它为相同(S)CSS文件中相同类名生成的实际哈希值的数倍。
推荐阅读
- arduino - ADNS 9800 Arduino 的分割和复制帧捕获输出
- python-2.7 - 无法在 python 上安装 http-parser 包:gcc.exe 失败,退出状态为 1
- asp.net - 服务应用程序池的进程遇到致命的通信错误 5011
- java - 毒刺过滤器与参数验证过滤器
- javascript - 过滤 API 的响应,所以我只得到一个值
- swift - swift 3中的后台任务
- angular - 从 Ionic 访问 ASP.NET Core WebApi 时出错
- angular - 带有逗号分隔值的 NgFor
- javascript - NoUISlider 与输入绑定
- android - 反编译签名的 apk,使用与原始签名 apk 不同的密钥库修改和重新编译?