有没有一种方法可以ng test
针对单个文件而不是整个测试套件运行?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma
在每次保存时都执行整个套件,这在构建足够大的测试套件时会有点慢。
这与如何仅使用angular-cli执行一个测试规范不同,因为该问题与运行单个规范有关。这是关于运行单个文件。该解决方案具有相同的Jasmine规范功能,但问题的性质略有不同。
有没有一种方法可以ng test
针对单个文件而不是整个测试套件运行?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma
在每次保存时都执行整个套件,这在构建足够大的测试套件时会有点慢。
这与如何仅使用angular-cli执行一个测试规范不同,因为该问题与运行单个规范有关。这是关于运行单个文件。该解决方案具有相同的Jasmine规范功能,但问题的性质略有不同。
Answers:
我发现Jasmine允许您为describe
和it
方法添加前缀f
(以获取焦点?)。因此,fdescribe
和fit
。如果您使用其中任何一种,业力将仅运行相关的测试。因此,要集中当前文件,您可以将顶层文件describe
更改为fdescribe
。为我的目的工作。
值得一提的是,您可以禁用特定测试,而无需通过xdescribe
和发表评论xit
xdescribe('Hello world', () => {
xit('says hello', () => {
expect(helloWorld())
.toEqual('Hello world!');
});
});
正如有人已经说过,如果您想专注于某些测试fdescribe
,fit
fdescribe('Hello world', () => {
fit('says hello', () => {
expect(helloWorld())
.toEqual('Hello world!');
});
});
这些天可以通过include
选件实现。
https://angular.io/cli/test#options
这是一个全局匹配,因此例如:
ng test --include='**/someFolder/*.spec.ts'
在8.1.0 发行说明中找不到它,但是@Swoox在下面提到的是cli版本之后的功能8.1.0
。感谢您弄清楚这一点。
您可以转到src/test.ts
并可以更改以下行:
const context = require.context('./', true, /\.spec\.ts$/);
至
const context = require.context('./', true, /**yourcomponent.component**\.spec\.ts$/);
最简单的方法是将vscode-test-explorer扩展及其子项angular-karma-test-explorer和jasmine-test-adapter一起使用,如果需要,您将获得一份当前测试列表,以逐个运行:
这是我对这个问题的回答,这里有更多详细信息。
如果将spec文件指定为参数,则可以使用。
例如:
ng test foo.spec.ts
希望这可以帮助。