Angular CLI 为现有组件创建 .spec 文件
Angular CLI create .spec files for already existing components
.angular-cli.json
中有一个选项可以禁用 *.spec
文件的自动创建,例如有关组件,请参阅 json schema。
这是一个非常好的功能,因为就个人而言(这只是我的意见),在快速发展的项目中测试组件可能不是真正值得的事情。
但是有时我希望有一个选项来为已经存在的组件/服务/管道/任何东西生成/重新创建相应的 *.spec
文件。
是否可以使用一些命令行调用?
创建了一个feature request,让我们看看进展如何...
有 2 个解决方案:
- 1 : 创建
@angular/cli
的副本,将您自己的代码添加(或扩展)到现有的 ng new
命令(https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts) 并集成到您的全局安装 @angular/cli
。这可能不切实际,不值得您花时间。
- 2 : 向
@angular/cli
团队提出拉取请求以整合您的想法,如果代码有效并且想法看起来足够好,他们可能会添加它.
目前 Angular CLI 不提供此功能,尚不清楚如何以及何时可以以官方方式管理它。
然而,here is a library "ngx-spec" that generates the spec based on Angular CLI spec presets.
选择一个你想要生成spec的目录,然后它会生成所有Angular个spec。
仅当spec文件不存在时生成文件,组件/指令/守卫/管道/服务遵循angular-cli文件生成名称。
npm install -g angular-spec-generator
angular-spec-generator 'C:\Users\Alan\Desktop\test'
SimonTest 是 VS Code 的扩展,可以为现有文件生成测试。我强烈推荐它(我不以任何方式隶属于他们)。
唯一的问题是它有 30 天的免费试用期,之后需要付费许可。
可以使用 https://github.com/smnbbrv/ngx-spec
创建现有 .ts 文件的脚手架
要在 Angular 项目中安装:
npm i -D ngx-spec@^2.0.0
(-D 是 --save-dev 的 shorthand)
示例用法(服务):
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 资源管理器中搜索),然后作为起点,我使用 ngx-spec
您可以使用 angular 规范生成器与代码扩展 https://marketplace.visualstudio.com/items?itemName=ThorstenRintelen.angular-spec-generator
.angular-cli.json
中有一个选项可以禁用 *.spec
文件的自动创建,例如有关组件,请参阅 json schema。
这是一个非常好的功能,因为就个人而言(这只是我的意见),在快速发展的项目中测试组件可能不是真正值得的事情。
但是有时我希望有一个选项来为已经存在的组件/服务/管道/任何东西生成/重新创建相应的 *.spec
文件。
是否可以使用一些命令行调用?
创建了一个feature request,让我们看看进展如何...
有 2 个解决方案:
- 1 : 创建
@angular/cli
的副本,将您自己的代码添加(或扩展)到现有的ng new
命令(https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts) 并集成到您的全局安装@angular/cli
。这可能不切实际,不值得您花时间。 - 2 : 向
@angular/cli
团队提出拉取请求以整合您的想法,如果代码有效并且想法看起来足够好,他们可能会添加它.
目前 Angular CLI 不提供此功能,尚不清楚如何以及何时可以以官方方式管理它。
然而,here is a library "ngx-spec" that generates the spec based on Angular CLI spec presets.
选择一个你想要生成spec的目录,然后它会生成所有Angular个spec。
仅当spec文件不存在时生成文件,组件/指令/守卫/管道/服务遵循angular-cli文件生成名称。
npm install -g angular-spec-generator
angular-spec-generator 'C:\Users\Alan\Desktop\test'
SimonTest 是 VS Code 的扩展,可以为现有文件生成测试。我强烈推荐它(我不以任何方式隶属于他们)。
唯一的问题是它有 30 天的免费试用期,之后需要付费许可。
可以使用 https://github.com/smnbbrv/ngx-spec
创建现有 .ts 文件的脚手架要在 Angular 项目中安装:
npm i -D ngx-spec@^2.0.0
(-D 是 --save-dev 的 shorthand)
示例用法(服务):
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 资源管理器中搜索),然后作为起点,我使用 ngx-spec
您可以使用 angular 规范生成器与代码扩展 https://marketplace.visualstudio.com/items?itemName=ThorstenRintelen.angular-spec-generator