我用Angular-CLI构建了Angular2项目(beta 20)。
是否有一种方法仅针对一个选定的规范文件运行测试?
我曾经有一个基于Angular2的项目,我可以手动向jasmine文件添加规格。但我不知道如何在因果测试之外设置这个,也不知道如何用Angular-CLI构建将因果测试限制在特定的文件上。
我用Angular-CLI构建了Angular2项目(beta 20)。
是否有一种方法仅针对一个选定的规范文件运行测试?
我曾经有一个基于Angular2的项目,我可以手动向jasmine文件添加规格。但我不知道如何在因果测试之外设置这个,也不知道如何用Angular-CLI构建将因果测试限制在特定的文件上。
当前回答
只是测试中需要的小变化。SRC文件夹中的Ts文件:
const context = require.context('./', true, /test-example\.spec\.ts$/);
在这里,test-example是我们需要运行的确切文件名
同样地,如果你只需要测试服务文件,你可以替换文件名,比如"/test-example.service"
其他回答
如果你想控制从命令行中选择哪些文件,我在Angular 7中做到了这一点。
总之,你需要安装@angular-devkit/build-angular:browser,然后创建一个自定义webpack插件来传递测试文件regex。例如:
角。Json -更改@angular-devkit/build-angular:browser中的测试构建器,并设置一个自定义配置文件:
...
"test": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./extra-webpack.config.js"
},
...
Extra-webpack.config.js -创建一个webpack配置,从命令行读取regex:
const webpack = require('webpack');
const FILTER = process.env.KARMA_FILTER;
let KARMA_SPEC_FILTER = '/.spec.ts$/';
if (FILTER) {
KARMA_SPEC_FILTER = `/${FILTER}.spec.ts$/`;
}
module.exports = {
plugins: [new webpack.DefinePlugin({KARMA_SPEC_FILTER})]
}
测试。编辑规范
...
// Then we find all the tests.
declare const KARMA_CONTEXT_SPEC: any;
const context = require.context('./', true, KARMA_CONTEXT_SPEC);
然后使用如下方法覆盖默认值:
KARMA_FILTER='somefile-.*\.spec\.ts$' npm run test
我在这里记录了背景故事,提前为类型和错误链接道歉。感谢@Aish-Anu上面的回答,为我指明了正确的方向。
只是测试中需要的小变化。SRC文件夹中的Ts文件:
const context = require.context('./', true, /test-example\.spec\.ts$/);
在这里,test-example是我们需要运行的确切文件名
同样地,如果你只需要测试服务文件,你可以替换文件名,比如"/test-example.service"
配置测试。SRC文件夹中的Ts文件:
const context = require.context('./', true, /\.spec\.ts$/);
替换/ \ .spec \。Ts $/与您想测试的文件名。例如:/app.component\.spec\.ts$/
这将只对app.component.spec.ts运行测试。
为像我这样正在寻找一种简单的扩展方法的人添加这个答案:
如果你像我一样使用VS代码,你可以简单地安装Jest Runner扩展,你可以轻松地运行/调试一个测试用例。
在angular-cli中,你可以运行这个命令,测试只会包含你想要的spec文件。
Ng测试——包括规格文件的路径