有一个选项.angular-cli.json
可以禁用自动创建*.spec
文件,例如组件,请参阅json schema。
这是一个非常好的功能,因为个人(这只是我的观点)测试组件可能不是在快速增长的项目中真正值得的事情。
但是有时我希望有一个选项来*.spec
为已经存在的组件/服务/管道/任何东西生成/重新创建相应的文件。
这可能使用一些命令行调用吗?
创建了一个功能请求,让我们看看它是如何进行的......
有一个选项.angular-cli.json
可以禁用自动创建*.spec
文件,例如组件,请参阅json schema。
这是一个非常好的功能,因为个人(这只是我的观点)测试组件可能不是在快速增长的项目中真正值得的事情。
但是有时我希望有一个选项来*.spec
为已经存在的组件/服务/管道/任何东西生成/重新创建相应的文件。
这可能使用一些命令行调用吗?
创建了一个功能请求,让我们看看它是如何进行的......
目前 Angular CLI 不提供此功能,并且尚不清楚如何以及何时可以以官方方式对其进行管理。
选择要生成规范的目录,然后它将生成所有 Angular 规范。
仅在spec文件不存在时生成文件,组件/指令/守卫/管道/服务遵循angular-cli文件生成名称。
npm install -g angular-spec-generator
angular-spec-generator 'C:\Users\Alan\Desktop\test'
可以使用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
SimonTest是 VS Code 的扩展,可为现有文件生成测试。我强烈推荐它(我与他们没有任何关系)。
唯一的问题是它提供 30 天免费试用,之后需要付费许可证。
您可以使用角度规范生成器与代码扩展https://marketplace.visualstudio.com/items?itemName=ThorstenRintelen.angular-spec-generator
有两种解决方案:
@angular/cli
,将您自己的代码(或扩展它)添加到现有ng new
命令(https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new. ts ) 并集成到您的全局安装@angular/cli
中。这可能是不切实际的,不值得你花时间。@angular/cli
整合您的想法,如果代码有效并且想法看起来足够好,他们可能会添加它。