测试工具链

我们的测试工具链将包括以下工具:

  • Jasmine
  • Karma
  • Phantom-js
  • Istanbul
  • Sinon
  • Chai

Jasmine是在Angular界最流行的测试框架。这是我们将编写我们的单元测试的核心框架。

Karma是一个测试自动化工具,用于控制我们的测试的执行以及执行它们的浏览器。 它还允许我们生成关于结果的各种报告。 对于一个或两个测试,这可能看起来像大炮打蚊子,但随着应用程序变得越来越大,测试单元数量增加,重要的是以有效的方式组织,执行和报告测试。 Karma是无依赖的,所以我们可以使用其他测试框架与其他工具(如代码覆盖报告,spy测试,e2e等)结合。

为了测试我们的Angular 2应用程序,我们必须创造一个运行它环境,我们可以使用Chrome或Firefox浏览器来实现(Karma支持浏览器测试),或者我们可以使用无浏览器的环境中测试我们的应用程序,它可以为我们提供了自动化某些任务和管理我们的测试流程的控制。PhantomJS提供的JavaScript API,允许我们创建一个可以用来引导我们的角2应用程序中的无头DOM实例。然后,使用运行我们的角2的应用程序,DOM实例,我们可以运行我们的测试。

Karma使用Istanbul生成代码覆盖率报告,它告诉我们正在测试的应用程序的总体百分比。 这是跟踪哪些组件/服务/管道等有没有写测试的好方法。 我们可以得到一些有用的洞察,有多少应用程序正在测试和在哪里测试。

对于一些额外的测试功能,我们可以使用Sinon库之类的spies 测试,subs测试和mock XHR请求。这是Istanbul自带的不一定需要spyOn进行整合spy测试功能。

Chai是断言库,可以与任何其他测试框架搭配。它提供了一些语法糖,让我们用不同的语言编写我们的单元测试 - 我们可以使用一个should,expect或assert接口。Chai还利用“功能链”形成类似英语的句子,用于以更加用户友好的方式描述测试。Chai不是测试所需的库,这里我们不会更深入地探讨它,但它是一个有用的工具,用于创建更清晰,更好的测试。