.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
团队提出拉动请求以集成您的想法,如果代码有效,并且该想法似乎足够好,他们可能会添加它。