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

Angular CLI为现有组件创建.spec文件,angular,angular-cli,angular-unit-test,Angular,Angular Cli,Angular Unit Test,.angular-cli.json中有一个选项,用于禁用自动创建*.spec文件,例如组件,请参阅 这是一个非常好的特性,因为我个人认为,在快速发展的项目中,测试组件可能不值得 然而,有时我希望有一个选项来为已经存在的组件/服务/管道/任何东西生成/重新创建相应的*.spec文件 使用一些命令行调用可以吗 创建了一个,让我们看看它是如何运行的…有两种解决方案: 1:创建@angular/cli的副本,添加您自己的代码或将其扩展到现有的ng new命令,并集成到全局安装的@angular/cli。

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

这是一个非常好的特性,因为我个人认为,在快速发展的项目中,测试组件可能不值得

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

使用一些命令行调用可以吗


创建了一个,让我们看看它是如何运行的…

有两种解决方案:

1:创建@angular/cli的副本,添加您自己的代码或将其扩展到现有的ng new命令,并集成到全局安装的@angular/cli。这可能是不切实际的,不值得你花时间。 2:向@angular/cli团队发出请求,整合您的想法,如果代码有效且想法足够好,他们可能会添加它。
目前Angular CLI不提供此功能,并且不清楚如何以及何时能够以官方方式管理此功能


但是,.

选择了一个要生成规范的目录,然后它将生成所有角度规范

仅当规范文件不存在时生成文件,并且组件/指令/保护/管道/服务遵循angular cli文件生成名称

npm install -g angular-spec-generator

angular-spec-generator 'C:\Users\Alan\Desktop\test'
是VS代码的扩展,用于为现有文件生成测试。我强烈建议我与他们没有任何关系


唯一需要注意的是,它附带30天的免费试用,之后需要付费许可证。

可以使用

要在角度项目中安装,请执行以下操作:

npm i-D ngx规范^2.0.0

-D是-save-dev的简写

服务的示例用法:

ngx规范:规范路径/my.service

ngx规范:规范路径/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();
  }));
});
它还意味着可以使用通配符生成测试,例如

ngx规格'**/*

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


注意-作为实现测试驱动开发的一种策略,我发现搜索和删除Angular项目中自动创建的所有现有*.spec.ts文件是最容易的,这是通过在Windows资源管理器中搜索创建初始工件的一部分,然后,作为起点,我使用ngx spec为主要的Angular data provider服务创建了一个测试,测试在快速增长的项目中非常重要!当它成为一个大项目时,你会受到副作用问题的困扰,并且会成为一个缓慢发展的项目。你是对的。可能我只是把它表达错了:当需求还不清楚,项目处于概念验证状态时,测试是一个真正的问题。这就是为什么能够晚一点生成它们是件好事:是的,这就是问题所在。但是SimonTest没有那么好。我用过它,但它不是那么令人满意。