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

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

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


当前回答

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

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

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

其他回答

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

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

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

这在任何情况下都对我有效:

ng test --include='**/dealer.service.spec.ts'

然而,我通常得到“TypeError:不能读取属性'ngModule'的null”:

ng test --main src/app/services/dealer.service.spec.ts

@angular/cli 10.0.4版本

你的每一个。spec。Ts文件将其所有测试分组在描述块中,如下所示:

description ('SomeComponent',() =>{…}

你可以很容易地只运行这一个块,通过在describe函数名前加上f:

fdescribe('SomeComponent',() =>{…}

如果你有这样的函数,就不会运行其他描述块。 顺便说一句。你可以用it => fit做类似的事情,还有一个“黑名单”版本- x。所以:

Fdescribe和fit只会导致以这种方式标记的函数运行 Xdescribe和xit会导致以这种方式标记的函数以外的所有函数运行

只是测试中需要的小变化。SRC文件夹中的Ts文件:

const context = require.context('./', true, /test-example\.spec\.ts$/);

在这里,test-example是我们需要运行的确切文件名

同样地,如果你只需要测试服务文件,你可以替换文件名,比如"/test-example.service"

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

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