问题描述
react-css-modules
包将呈现如下 html:
className="src-Comp-___style__navi-col___1-3yc6d"
但是哈希字符串 (3yc6d
) 会导致 jest 快照出错:
<div
- className="src-Comp-TopcoderFooter-___style__navi-col___6dcta"
+ className="src-Comp-TopcoderFooter-___style__navi-col___3yc6d"
>
如您所见,哈希值已更改,因此快照测试失败。
问题是我从 github 克隆了一个 repo,因此测试失败。 (当我添加拉取请求时它可能会失败。)
因此在我的电脑中生成的哈希值与 repo 所有者不同。 (如果我重新运行测试,哈希值不会改变。)
这个哈希背后的逻辑是什么,我怎样才能防止快照测试失败?
解决方法
react-css-modules 库已弃用;和 babel-plugin-react-css-modules 他们建议改用,已经有一段时间没有维护了,并且与最新版本的 Webpack 的 css-loader
不兼容(它负责 CSS 端的 CSS 名称转换;它决定了该哈希背后的实际逻辑,which you can find here)。
如果您需要该功能,我建议您使用 my fork of babel-plugin-react-css-modules,我会不断更新它并与最新的 css-loader
版本兼容 :)
PS:而且,是的,css-loader
中从 3.6.0
版本到当前 5.2.4
的更新已经改变了它为相同的类名产生的实际哈希值的数倍。 (S)CSS 文件。