是否有一种方法可以为单个文件而不是整个测试套件运行ng test ?理想情况下,我希望在编辑文件时获得尽可能快的反馈循环,但karma在每次保存时执行整个套件,当您构建足够大的测试套件时,这有点慢。
这与如何使用angular-cli只执行一个测试规范不同,因为那个问题是关于运行一个单独的规范。这是关于运行一个单独的文件。解决方案涉及相同的Jasmine规范特性,但问题的性质略有不同。
是否有一种方法可以为单个文件而不是整个测试套件运行ng test ?理想情况下,我希望在编辑文件时获得尽可能快的反馈循环,但karma在每次保存时执行整个套件,当您构建足够大的测试套件时,这有点慢。
这与如何使用angular-cli只执行一个测试规范不同,因为那个问题是关于运行一个单独的规范。这是关于运行一个单独的文件。解决方案涉及相同的Jasmine规范特性,但问题的性质略有不同。
当前回答
使用
ng test --main file.spec.ts
其他回答
使用
ng test --main file.spec.ts
获取测试文件的相对路径并像这样提供
ng test --include=src\app\app.component.spec.ts
这对我有用!!
仅适用于JetBrains WebStorm用户
我没有安装ng,所以不能运行ng测试…从命令行。我也不能安装它,因为它可能会把我现有代码库的Angular版本搞砸。我使用的是JetBrains WebStorm IDE,在其中你可以右键单击规格文件并运行测试。
在Angular 9中,我的运气如下:
如果你想测试一个特定的文件:
ng test --test-file=path/to/your/file.component.spec.ts
如果你的Angular项目中有多个项目,并且/或正在使用NX,你可以指定一个Angular项目来测试:
ng test project-name
你也可以使用
ng test --testNamePattern componentname
例如path/to/your/component/componentname.spec.ts。这将扫描每个项目中的每个文件,并且速度较慢。
如果你只想测试自上次提交以来发生了什么变化(使用git或其他版本控制)
ng test --only-changed
不能在普通的Angular中工作。
我发现Jasmine允许您为describe加上前缀,它使用f(表示焦点)方法:fdescribe和fit。如果使用其中之一,Karma将只运行相关测试。要关注当前文件,只需将顶层描述更改为fdescribe。如果您在2.1版本之前使用Jasmine,重点关键字是:iit和ddescribe。
下面的示例代码只运行第一个测试:
// Jasmine versions >/=2.1 use 'fdescribe'; versions <2.1 use 'ddescribe'
fdescribe('MySpec1', function () {
it('should do something', function () {
// ...
});
});
describe('MyOtherSpec', function () {
it('should do something else', function () {
// ...
});
});
这里是Jasmine关于聚焦规格的文档,这里是一篇相关的SO文章,提供了额外的周到解决方案。