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

Angular CLI create .spec files for already existing components

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

这是一个非常好的功能,因为就个人而言(这只是我的意见),在快速发展的项目中测试组件可能不是真正值得的事情。

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

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

创建了一个feature request,让我们看看进展如何...

有 2 个解决方案:

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

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

选择一个你想要生成spec的目录,然后它会生成所有Angular个spec。

仅当spec文件不存在时生成文件,组件/指令/守卫/管道/服务遵循angular-cli文件生成名称。

npm install -g angular-spec-generator

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

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

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

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

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

要在 Angular 项目中安装:

npm i -D ngx-spec@^2.0.0

(-D 是 --save-dev 的 shorthand)

示例用法(服务):

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 资源管理器中搜索),然后作为起点,我使用 ngx-spec

您可以使用 angular 规范生成器与代码扩展 https://marketplace.visualstudio.com/items?itemName=ThorstenRintelen.angular-spec-generator