我的一位同事最近在一个新项目(一个JS库)中设置了测试,其中一个转换步骤与生产配置中Webpack的babel配置挂钩。
作为参考,这是Jest使用的设置:https://jestjs.io/docs/en/configuration.html#transform-object-string-string
生产版本以ES5为目标,而我们的CI在Node 10或更高版本上。这意味着,对于我们所有的测试,源代码都已通过所有不必要的Babel转换进行了转换。请注意,我们的源代码是常规的ES2016 Javascript,没有什么花哨的。唯一需要的转换可能是ES6导入语法。
我的直觉是这很浪费,不必要地将测试耦合到生产构建配置。但是我的同事的理由是他想确保测试能够与用户将要使用的相同工件一起运行。
这对我来说很有意义,但是我不确定正确的答案是什么。每种方法的优缺点是什么?针对生产构建转换运行测试有什么危险?