我用Angular-CLI构建了Angular2项目(beta 20)。
是否有一种方法仅针对一个选定的规范文件运行测试?
我曾经有一个基于Angular2的项目,我可以手动向jasmine文件添加规格。但我不知道如何在因果测试之外设置这个,也不知道如何用Angular-CLI构建将因果测试限制在特定的文件上。
我用Angular-CLI构建了Angular2项目(beta 20)。
是否有一种方法仅针对一个选定的规范文件运行测试?
我曾经有一个基于Angular2的项目,我可以手动向jasmine文件添加规格。但我不知道如何在因果测试之外设置这个,也不知道如何用Angular-CLI构建将因果测试限制在特定的文件上。
当前回答
如果您在一个使用monorepo架构的项目中工作,那么您必须在命令行中将项目名称写在脚本后。 例如:
ng test MyProject1Name -- --include='myComponent.component.spec.ts'
其他回答
对于像我这样正在寻找一种在Angular中运行单一规范的方法并发现了这个SO的人来说更是如此。
根据最新的Angular文档(撰写本文时是v9.0.6), ng test命令有一个——include选项,你可以在其中指定一个*.spec.(ts|tsx)文件目录,也可以只指定一个.spec.(ts|tsx)文件本身。
https://angular.io/cli/test
用,包括
这是一种包含的工作
ng test --include src/app/path-to-component/path-component.component.spec.ts
我试过——主要,但它显示所有失败的结果,而它不是。main会改变主测试。ts文件。
你只能用Angular CLI测试特定的文件(ng命令),如下所示:
ng test --main ./path/to/test.ts
更多文档请访问https://angular.io/cli/test
注意,虽然这适用于独立的库文件,但不适用于angular组件/服务等。这是因为angular文件依赖于其他文件(即src/test。遗憾的是——main标志不接受多个参数。
你的每一个。spec。Ts文件将其所有测试分组在描述块中,如下所示:
description ('SomeComponent',() =>{…}
你可以很容易地只运行这一个块,通过在describe函数名前加上f:
fdescribe('SomeComponent',() =>{…}
如果你有这样的函数,就不会运行其他描述块。 顺便说一句。你可以用it => fit做类似的事情,还有一个“黑名单”版本- x。所以:
Fdescribe和fit只会导致以这种方式标记的函数运行 Xdescribe和xit会导致以这种方式标记的函数以外的所有函数运行
这在任何情况下都对我有效:
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版本