我用Angular-CLI构建了Angular2项目(beta 20)。

是否有一种方法仅针对一个选定的规范文件运行测试?

我曾经有一个基于Angular2的项目,我可以手动向jasmine文件添加规格。但我不知道如何在因果测试之外设置这个,也不知道如何用Angular-CLI构建将因果测试限制在特定的文件上。


当前回答

为像我这样正在寻找一种简单的扩展方法的人添加这个答案:

如果你像我一样使用VS代码,你可以简单地安装Jest Runner扩展,你可以轻松地运行/调试一个测试用例。

其他回答

这在Angular 7中为我工作。它基于ng命令的——main选项。我不确定这个选项是否没有记录,是否可能会更改,但它适合我。我在包里放了条线。Json文件在脚本部分。在这里,我使用ng test命令的——main选项指定了.spec文件的路径。ts文件,我想执行。例如

"test 1": "ng test --main E:/WebRxAngularClient/src/app/test/shared/my-date-utils.spec.ts",

您可以像运行任何此类脚本一样运行该脚本。我通过点击npm部分的“test 1”在Webstorm中运行它。

一个简单的方法是用f开头。

fdescribe('testecomponente', () => {
  fit('should create', () => {
    //your code 
  }
  
}
  

在bash终端中,我喜欢使用双破折号。使用VS Code,你可以在资源管理器或打开选项卡上右键单击规范文件。然后选择“复制相对路径”。运行下面的命令,从剪贴板粘贴相对路径。

npm t -- --include relative/path/to/file.spec.ts

双破折号标志着npm t命令选项的结束,并将之后的任何内容传递给下一个指向ng t的命令。它不需要任何修改,并快速给出所需的结果。

如果你想控制从命令行中选择哪些文件,我在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, /\.spec\.ts$/);

替换/ \ .spec \。Ts $/与您想测试的文件名。例如:/app.component\.spec\.ts$/

这将只对app.component.spec.ts运行测试。