74

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

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

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

这可能使用一些命令行调用吗?

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

4

6 回答 6

43

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

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

于 2018-06-05T09:18:49.833 回答
21

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

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

npm install -g angular-spec-generator

angular-spec-generator 'C:\Users\Alan\Desktop\test'
于 2018-07-05T10:44:34.277 回答
9

可以使用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

于 2019-09-06T05:11:04.300 回答
5

SimonTest是 VS Code 的扩展,可为现有文件生成测试。我强烈推荐它(我与他们没有任何关系)。

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

于 2019-03-19T07:25:07.653 回答
0

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

于 2022-03-05T18:27:26.887 回答
-1

有两种解决方案:

  • 1:创建一个副本@angular/cli,将您自己的代码(或扩展它)添加到现有ng new命令(https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new. ts ) 并集成到您的全局安装@angular/cli中。这可能是不切实际的,不值得你花时间。
  • 2:向团队提出拉​​取请求以@angular/cli整合您的想法,如果代码有效并且想法看起来足够好,他们可能会添加它。
于 2017-09-18T13:50:29.100 回答