Karma 生成器重写 0.8.0

大家好!Yeoman 团队的 Eddie 今天来跟大家介绍一下 Karma 生成器最近的改动。这些改动主要集中在配置和测试方面。

为什么需要重写?

简而言之:重写并非必要。只是 Angular 生成器 需要一些更改才能继续工作。

Karma 团队 最近对 Karma 安装插件的方式 做了一些更改。以前,它会安装许多默认插件。现在它不安装任何插件。许多人认为这是一个非常糟糕的改变。事实上,这是一个很好的改变,因为它不再包含膨胀软件了。现在只会安装用户想要的插件。

Angular 生成器使用 Karma 生成器来编写其测试组件。Karma 的更改导致测试无法开箱即用。测试抱怨无法执行某些操作,例如启动浏览器。一个快速的解决方法是在 Angular 生成过程中安装缺少的插件。这不是一个理想的解决方法,因为它使项目更容易出错且可组合性降低。更好的解决方案是使 Karma 生成器更具可定制性。

此外,这也是一个很好的项目,可以测试 生成器系统 的新 0.17.0 更改。

重写的目标是什么?

  • 使用新的 0.17.0 Yeoman 生成器
  • 整体改进测试
  • 支持自定义 Karma 配置中的几乎所有内容
  • 安装用户请求的 Karma 插件(以及未明确指定的必需插件)
  • 编写 Gruntfile.js 配置块和任务

0.17.0 Yeoman 生成器

Simon 最近对 Yeoman 生成器系统做了一些重大更改,这些更改需要一些实际测试。虽然并非每个新功能都经过测试,但核心功能得到了一些曝光。这包括更简单的测试方法、更简单的生成器语法和 Gruntfile 集成*

测试

新的生成器系统使重写测试变得轻松愉快,而不是一项令人畏惧的任务。它减少了所需的代码量,同时提高了可读性。这通常不会发生,因此这是一个受欢迎的改变。

生成器测试现在涵盖了测试选项和文件创建,而不是同时执行这两项操作。这应该可以确保测试的准确性,因为各个部分将独立进行测试。每个源代码更改都是可验证的;不再需要担心此更改或彼更改是否会破坏整个程序。

自定义

现在很少有生成器的部分不可自定义。以下是一些可用选项的简短列表

  • 指定在哪些浏览器中运行测试(默认为 PhantomJS)
  • 使用哪个框架(默认为 Jasmine)
  • 要测试哪些文件
  • 使用哪些插件。生成器会添加缺少的插件,例如框架或浏览器。
  • 配置文件写入的位置(包括名称和路径)

这不是完整的列表。有关详细信息,请查看项目的 README

Gruntfile

生成器还尝试添加适当的 Gruntfile 配置块和任务。这是一个受欢迎的改变,无需手动执行并希望能够正确执行。对于用 CoffeeScript 编写的 Gruntfile,请参阅 CoffeeScript 说明

CoffeeScript Gruntfile 支持

CoffeeScript 没有解析器能够以编程方式读取它并插入配置(如果有,欢迎提交拉取请求)。因此,生成器系统无法写入配置。:(

阴暗面

但并非所有事情都一帆风顺;此重写也有一些缺点。第一个缺点(也是优点)是它不再以 Angular 为中心。angular-scenarioangular-mock 不再默认安装。要使用它们,请将它们作为组件添加到 bower-components 选项中。另一个更改是,除了 Jasmine 和 PhantomJS 所需的两个插件外,不再指定任何其他默认插件。

karma init 相比

有了 karma init,这个生成器岂不是有点多余了?

不是的。karma init 会搭建一个基本的配置文件,但不会提供像此生成器一样多的自定义选项。它也不会更新 Gruntfile。此生成器提供了此功能,允许它与其他生成器组合并安装依赖项。

总结

我希望这次重写是其他 Yeoman 生成器未来发展的征兆。如果不出意外,至少测试应该会让许多人脸上露出笑容,因为它现在得到了更好的测试。

与往常一样,请在 问题页面 上提交错误报告。我们始终欢迎拉取请求,但请务必先提交一个提出更改的问题。


« 查看更多帖子