.angular-cli.json
中有一个选项可禁用自动创建*.spec
个文件,例如对于组件,请参阅json schema。
这是一个非常好的功能,因为个人(这只是我的观点)测试组件可能不是在快速增长的项目中真正值得的东西。
但有时我希望有一个选项来为已有的组件/服务/管道/生成/重新创建相应的*.spec
文件。
是否可以使用某些命令行调用?
创建了一个feature request,让我们看看它是怎么回事......
答案 0 :(得分:15)
目前Angular CLI不提供此功能,并且不清楚如何以及何时以官方方式管理它。
然而,here is a library "ngx-spec" that generates the spec based on Angular CLI spec presets。
答案 1 :(得分:3)
选择要生成规格的目录,然后它将生成所有Angular规格。
仅当spec文件未退出且组件/指令/ guard /管道/服务遵循angular-cli文件生成名称时,才生成文件。
npm install -g angular-spec-generator
angular-spec-generator 'C:\Users\Alan\Desktop\test'
答案 2 :(得分:1)
SimonTest是VS Code的扩展,可为现有文件生成测试。我强烈推荐它(我不以任何方式隶属于他们)。
唯一的收获是它具有30天的免费试用期,之后需要付费许可证。
答案 3 :(得分: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
注意-作为实施测试驱动开发的一种策略,我发现最简单的方法是搜索并删除在Angular项目中自动创建的所有现有*.spec.ts
文件创建初始工件的过程(通过在Windows资源管理器中搜索),然后作为起点,我使用ngx-spec
答案 4 :(得分:0)
有两个解决方案:
@angular/cli
的副本,将您自己的代码(或扩展名)添加到现有的ng new
命令(https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts)并集成到您的全局已安装@angular/cli
。这可能是不切实际的,不值得你花时间。@angular/cli
小组提出拉取请求以整合您的想法,如果代码有效并且想法看起来足够好,他们可能会添加它。