Angular CLI为已经存在的组件创建.spec文件



.angular-cli.json中有一个选项禁用*.spec文件的自动创建,例如。有关组件,请参见JSON模式。

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

但是,有时我想有一个选择,以生成/重新创建已经存在的组件/服务/管道/whit的相应的*.spec文件。

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

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

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

但是,这是" ngx-spec"库。基于Angular CLI规格预设生成规格。

如果您使用的是使用此扩展名的NGX-Spec推荐的作者https://github.com/cyrilletuzi/vscode-angular-schematics

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

仅在不存在规格文件时生成文件,并且组件/指示/守卫/管道/服务遵循Angular-CLI文件生成名称。

npm install -g angular-spec-generator
angular-spec-generator 'C:UsersAlanDesktoptest'

可以通过使用https://github.com/smnbbrv/ngx-pec

来创建现有.TS文件的脚手架。

安装在角度项目中:

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-pec/issues/10


注意 - 作为实施测试驱动开发的策略,我发现最容易搜索和删除所有在Angular Project中自动创建的现有*.spec.ts文件作为初始伪像创建的一部分(通过在Windows Explorer中搜索),然后作为起点,我使用ngx-spec

为主要角度数据提供商服务创建了一个测试

有2个解决方案:

  • 1:创建@angular/cli的副本,将您自己的代码(或将其扩展到现有ng new命令(https://github.com/angular.com/angular/angular/angular/angular/angular-cli/blob/master)/packages/@angular/cli/commands/new.ts)并集成到您的全局安装的@angular/cli。这可能是不切实际的,不值得您的时间。
  • 2:@angular/cli团队提出拉动请求以集成您的想法,如果代码有效,并且该想法似乎足够好,他们可能会添加它。

最新更新