17

我们有一个由多个开发人员在多个操作系统上开发的项目。我们在更漂亮的配置中将字符限制设置为 120 个字符。我们的 windows 机器生成的快照与我们的 linux/unix 机器不同。

视窗:

              <h4
                className="RightPanel__item--heading heading--headingBlocks
subHeading--headingBlocks subHeading--different"
              >

而在我们的 linux/unix 机器上,快照会生成以下行:

              <h4
                className="RightPanel__item--heading heading--headingBlocks subHeading--headingBlocks subHeading--different"
              >

对于 linux/unix 快照,代码在第 119 列结束,而 Windows 机器在最后几个属性之前生成一个新行。我们使用 React,使用 Jest 进行测试,使用 eslint 进行 linting,使用 Babel 进行转换。

相关配置

  1. babelrc: 转换: { "^.+\.jsx?$": "babel-jest" }
  2. eslintrc: "globals": { "jest": true }
  3. prettierrc:“打印宽度”:120
  4. prettierignore: *.snap

项目

React, Babel, Webpack, vanilla es6+ no typescript project with jest for testing

研究

我们尝试设置 eslint 的 "linebreak-style": ["error", "unix"] 以查看 eslint 更改是否会更新修复 Windows 的开玩笑快照,但无济于事。我们已确保跨机器安装相同版本的 jest。与 prettier 和 eslint 相同。

关于我们如何解决这个问题的任何建议,以便一个操作系统或另一个操作系统的测试不会失败?

4

3 回答 3

1

在团队中同步此类内容的最佳方式是使用 EditorConfig。大多数代码编辑器都支持它,无论是本机还是通过扩展。

EditorConfig 是一种指定编辑器设置的通用方法,在您的情况下为行尾,所有操作系统上的所有代码编辑器都尊重这一点。

https://editorconfig.org

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
于 2020-09-18T04:01:27.733 回答
0

我们遇到了完全相同的问题,即 Windows 机器生成的快照具有与 Mac 不同的换行符。

我们发现 VS Code 在 Windows 机器上设置为 LF 换行设置,更改为 CRLF 解决了这个问题。

我建议检查编辑器中的行尾设置以及链中其他任何位置。

于 2019-07-18T20:10:23.443 回答
0

We are using snapshot serializer in our project to avoid such issues, it should help in your case too. For html snapshots I recommend jest-serializer-html

于 2019-04-09T10:29:44.453 回答