36

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

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

但是有时候我想有一个选项来*.spec为已经存在的组件/服务/管道/任何东西生成/重新创建相应的文件。

使用某些命令行调用可能吗?

创建了功能请求,让我们看看它如何进行...

  • 在一个快速发展的项目中,测试很重要!当这将是一个大项目时,您将遭受副作用问题的困扰,并且它将成为一个缓慢发展的项目。QED –  Mehdi Benmoha 18年6月5日在9:21
  • 你是对的。可能是因为我只是表达错了:当需求尚未明确并且项目处于概念验证状态时,测试就是一个实际问题。这就是为什么能够稍后再生成它们的原因:) – smnbbrv 18年  月5日,9:23

5个答案    正确答案

23

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

但是,这是一个库“ ngx-spec”,它基于Angular CLI规范预设生成规范

5

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

仅当spec文件不存在时才生成文件,并且component / directive / guard / pipe / service遵循angular-cli文件生成名称。

npm install -g angular-spec-generator

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

有两种解决方案:

1个

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

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

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


注意 -作为实施测试驱动开发的策略,我发现最简单的方法是搜索和删除*.spec.ts在Angular项目中自动创建的所有现有文件,这些文件是初始工件创建(通过在Windows资源管理器中搜索)的一部分,然后作为起点,我使用以下方法为主要Angular数据提供程序服务创建了一个测试ngx-spec

来自  https://stackoverflow.com/questions/46276055/angular-cli-create-spec-files-for-already-existing-components