Angular CLI为现有组件创建.spec文件

时间:2017-09-18 09:34:57

标签: angular angular-cli angular-unit-test

.angular-cli.json中有一个选项可禁用自动创建*.spec个文件,例如对于组件,请参阅json schema

这是一个非常好的功能,因为个人(这只是我的观点)测试组件可能不是在快速增长的项目中真正值得的东西。

但有时我希望有一个选项来为已有的组件/服务/管道/生成/重新创建相应的*.spec文件。

是否可以使用某些命令行调用?

创建了一个feature request,让我们看看它是怎么回事......

5 个答案:

答案 0 :(得分:15)

目前Angular CLI不提供此功能,并且不清楚如何以及何时以官方方式管理它。

然而,here is a library "ngx-spec" that generates the spec based on Angular CLI spec presets

答案 1 :(得分:3)

选择要生成规格的目录,然后它将生成所有Angular规格。

仅当spec文件未退出且组件/指令/ guard /管道/服务遵循angular-cli文件生成名称时,才生成文件。

npm install -g angular-spec-generator

angular-spec-generator 'C:\Users\Alan\Desktop\test'

答案 2 :(得分:1)

SimonTest是VS Code的扩展,可为现有文件生成测试。我强烈推荐它(我不以任何方式隶属于他们)。

唯一的收获是它具有30天的免费试用期,之后需要付费许可证。

答案 3 :(得分:1)

可以使用https://github.com/smnbbrv/ngx-spec

创建现有.ts文件的脚手架

要在Angular项目中安装:

npm i -D ngx-spec@^2.0.0

(-D是--save-dev的简写)

示例用法(用于服务)

ng g ngx-spec:spec path/my.service

ng g ngx-spec:spec path/my.service.ts

对于服务,这并未设置要通过注入创建的测试。进行调整,以使测试看起来像这样:

import { TestBed, inject } from '@angular/core/testing';

import { DataService } from './data.service';
import { AuthService } from './auth.service';
import { HttpClient, HttpHandler } from '@angular/common/http';

describe('DataService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [DataService, AuthService, HttpClient, HttpHandler
      ]
    });
  });

  it('should be created', inject([DataService, AuthService], (service: DataService) => {
    expect(service).toBeTruthy();
  }));
});

这也意味着可以使用通配符来生成测试,例如

ng g ngx-specs '**/*

这对我不起作用-请参阅GitHub问题:

https://github.com/smnbbrv/ngx-spec/issues/10


注意-作为实施测试驱动开发的一种策略,我发现最简单的方法是搜索并删除在Angular项目中自动创建的所有现有*.spec.ts文件创建初始工件的过程(通过在Windows资源管理器中搜索),然后作为起点,我使用ngx-spec

为主要Angular数据提供程序服务创建了一个测试

答案 4 :(得分:0)

有两个解决方案: