javascript - 在 Babel 项目工作流程中,首先运行单元测试然后再进行转换是否更有意义,反之亦然?

标签 javascript ecmascript-6 babeljs

在工作流程(grunt、gulp、npm)中,最好:

  1. 测试
  2. 转换为 ES5
  3. 交付(捆绑、缩小等)

或者

  1. 转换为 ES5
  2. 测试
  3. 交付(捆绑、缩小等)

第一种方法,我会给我的单元测试库提供一个预处理器(如./node_modules/.bin/mocha --compilers js:babel/register example.js),并且仅然后我将继续进行转译。第二种方法,我将测试转译步骤的输出。

#1 或#2 有什么注意事项吗?期待了解这两种方法的优缺点。

最佳答案

对我来说,对将要发送给客户的代码运行测试似乎是有意义的。

按照这个逻辑,您应该针对转译的代码运行测试。

但是这里有两种思路:

  1. 我们没有编写 babel,我们不应该测试它的效果
  2. 我们没有写 babel 并不重要,无论如何我们都应该测试我们的转译后代码是否有效

对于某些依赖项,我订阅#1,但对于 babel 等构建工具,我倾向于订阅#2

Babel 很棒,但它并不完美。它也可能会犯错误,我认为最好采取防御措施,并在可能的情况下在构建/测试中发现这一点。

对于其他事情,例如在代码中包含库,我更有可能信任提供的测试套件。例如,如果我要编写一个 React 应用程序,我就不会费心为 React 特定功能编写测试。

关于javascript - 在 Babel 项目工作流程中,首先运行单元测试然后再进行转换是否更有意义,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33228754/

相关文章:

javascript - 当选择选项在 HTML 中更改时更改表单字段

javascript - 如何使用 Xpages onchange 事件激活按钮

javascript - 使用 ES6 语法和动态路径导入模块

javascript - 两级解构一个对象参数?

react-native - 应用程序发布崩溃 t 不是一个函数

javascript - 尝试导入错误 : 'default' is not exported from '../assertThisInitialized/_index.mjs'

javascript - 使用 jQuery 交换选择列表中的值

javascript - 使用 lodash 展平嵌套对象

javascript - 如何避免在 Webpack 构建中捆绑模拟模块?

javascript - 需要在框中对 Angular 放置文本。使用 CSS