运行ng测试和ng一起服务

时间:2018-01-10 01:59:54

标签: angular karma-runner angular-cli webpack-dev-server

我是Angular 5的相对新手,我正在尝试为我的团队设置开发设置来构建Angular 5应用程序。

我希望团队能够运行linting& amp;每次进行更改时进行单元测试,然后提供更改,以便开发人员可以立即看到她所做的更改。

我尝试了以下内容:

  • 运行ng lint会使项目失效
  • 运行ng test启动了Karma测试运行器,对代码所做的任何更改都会立即启动测试并向开发人员提供反馈,如果刚刚引入的任何更改导致测试中断。
  • 运行ng serve将在内部启动webpack-dev-server并构建项目并提供服务,以便开发人员可以立即看到添加/修改的功能,以便在浏览器上进行验证。

我想要实现的是让开发人员在上述所有这三个方面得到持续的反馈 - 掉线错误,破坏测试,并提供功能 - 因为他们继续致力于开发项目。 / p>

有没有办法让所有这三个一起运行并且对开发人员可见,并对代码进行每次更改?

4 个答案:

答案 0 :(得分:1)

可以使用Angular构建器执行此操作。通过创建自己的构建器,您可以轻松调用现有的Angular CLI构建器。例如:

import { merge } from 'rxjs';
import { executeKarmaBuilder, executeDevServerBuilder } from '@angular-devkit/build-angular';

export function runTestAndServe(context: BuilderContext): Observable<BuilderOutput> {
  return merge(
    executeKarmaBuilder(KARMA_OPTIONS, context),
    executeDevServerBuilder(DEV_SERVER_OPTIONS, context)
  );
}

确保您的KARMA_OPTIONS正在使用--watch

答案 1 :(得分:0)

您可以使用&运算符同时运行所有三个命令(不要与&&混淆)。操作员将生成进程,但在下一个进程中在控制台中共享输出。

例如

ng test & ng server & ng lint

所有三个都会立即运行。您可以将上述内容放入bash脚本中以使其更容易。

我确实尝试将其添加到package.json作为可运行的脚本,但它没有用。

答案 2 :(得分:0)

问题是你无法一直运行ng lintng test,而ng serve将会运行,并且会一直保持实时重新加载,直到你终止它为止。

这就是为什么一般来说,人们会将单元测试集成到一个持续集成周期中,一般使用Jenkins作业/管道,并通过WebHook或类似的东西链接到他们的存储库。

详细说来,就像在每个commit / merge request / etc ...之后,Jenkins作业将运行ng lintng test命令并输出如果测试通过,结果将允许commit / push / merge request

这样,开发人员不需要一直手动运行ng testng lint命令,因为无论他们做什么,如果运行它们的作业没有通过它们就会被卡住。

您可以做的是为您的存储库强制执行持续集成流程,或者强制您的团队在工作完成后检查并运行命令。

显然,第一选择更好。

答案 3 :(得分:0)

@Reactgular 如果你想把它作为脚本添加到 package.json 中,你应该像这样添加:

adc

}