如何对 Angular 应用程序的子模块的所有组件执行 ng 测试
How can I execute ng test for all components of sub modul of Angular app
我有我的 angular 应用程序,声明如下:
app.module.ts
export class AppModule {}
为此我可以 运行 使用 ng test MyApp
进行测试
在这个应用程序中,我有多个模块,声明如下:
我的-one.module.ts/我的-other.module.ts
export class MyOneModule {}
export class MyOtherModule {}
这些是在 AppModule 中导入的。
我怎样才能做 ng test MyOneModule
/ ng test MyOtherModule
之类的事情,我想 运行 只测试 运行 中的所有组件 "sub module" 而不是应用程序中的所有测试?
我无法在 official docu 或此处的 Whosebug 中找到信息。有可能吗?
您可以在网上找到一些资源,such as this one,它解释了如何将文件 grep 到 运行 只有它们。
我还记得一位同事 运行 从 intelliJ 对单个文件进行测试,并且有一个命令行参数,但我完全不记得了。
最后,您还可以在测试中使用 fdescribe/xdescribe
和 fit/xit
来仅 运行 那些。
我最终使用了这个解决方法:
在test.ts
我改路径:
const context: any = require.context('./', true, /\.spec\.ts$/);
到
const context: any = require.context('./app/modules/my-one-module', true, /\.spec\.ts$/);
或
const context: any = require.context('./app/modules/my-other-module', true, /\.spec\.ts$/);
这会导致 ng test
仅在定义的目录(及其子目录)中执行测试。
不理想,因为我不喜欢对 checked-in 文件进行更改,这些文件并不意味着要提交,但它可以完成工作。
您可以单独测试每个模块,而无需更改任何代码。
为 moduleone 复制 test.ts 和 tsconfig.spec.json 文件并重命名如下;
test.moduleone.ts
tsconfig.moduleone.spec.json
在tsconfig.moduleone.spec.json
中找到test.ts并将其更改为test.moduleone.ts
"files": [
"test.moduleone.ts"
]
在 test.moduleone.ts;
中查找并更改路径为 moduleone 路径
const context: any = require.context('./app/moduleone', true, /\.spec\.ts$/);
运行 像这样测试 moduleone;
ng test --main src/test.moduleone.ts --ts-config src/tsconfig.moduleone.spec.json
您可以将每个模块的脚本添加到 package.json
中的脚本部分
"scripts":{
"moduleone_tests":"ng test --main src/test.moduleone.ts --ts-config src/tsconfig.moduleone.spec.json"
}
所以你可以用一个简单的命令测试每个模块,比如
npm run moduleone_tests
我有我的 angular 应用程序,声明如下:
app.module.ts
export class AppModule {}
为此我可以 运行 使用 ng test MyApp
在这个应用程序中,我有多个模块,声明如下:
我的-one.module.ts/我的-other.module.ts
export class MyOneModule {}
export class MyOtherModule {}
这些是在 AppModule 中导入的。
我怎样才能做 ng test MyOneModule
/ ng test MyOtherModule
之类的事情,我想 运行 只测试 运行 中的所有组件 "sub module" 而不是应用程序中的所有测试?
我无法在 official docu 或此处的 Whosebug 中找到信息。有可能吗?
您可以在网上找到一些资源,such as this one,它解释了如何将文件 grep 到 运行 只有它们。
我还记得一位同事 运行 从 intelliJ 对单个文件进行测试,并且有一个命令行参数,但我完全不记得了。
最后,您还可以在测试中使用 fdescribe/xdescribe
和 fit/xit
来仅 运行 那些。
我最终使用了这个解决方法:
在test.ts
我改路径:
const context: any = require.context('./', true, /\.spec\.ts$/);
到
const context: any = require.context('./app/modules/my-one-module', true, /\.spec\.ts$/);
或
const context: any = require.context('./app/modules/my-other-module', true, /\.spec\.ts$/);
这会导致 ng test
仅在定义的目录(及其子目录)中执行测试。
不理想,因为我不喜欢对 checked-in 文件进行更改,这些文件并不意味着要提交,但它可以完成工作。
您可以单独测试每个模块,而无需更改任何代码。
为 moduleone 复制 test.ts 和 tsconfig.spec.json 文件并重命名如下;
test.moduleone.ts
tsconfig.moduleone.spec.json
在tsconfig.moduleone.spec.json
中找到test.ts并将其更改为test.moduleone.ts"files": [
"test.moduleone.ts"
]
在 test.moduleone.ts;
中查找并更改路径为 moduleone 路径const context: any = require.context('./app/moduleone', true, /\.spec\.ts$/);
运行 像这样测试 moduleone;
ng test --main src/test.moduleone.ts --ts-config src/tsconfig.moduleone.spec.json
您可以将每个模块的脚本添加到 package.json
中的脚本部分"scripts":{
"moduleone_tests":"ng test --main src/test.moduleone.ts --ts-config src/tsconfig.moduleone.spec.json"
}
所以你可以用一个简单的命令测试每个模块,比如
npm run moduleone_tests