Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度-视图的代码覆盖率_Angular_Unit Testing_Code Coverage - Fatal编程技术网

Angular 角度-视图的代码覆盖率

Angular 角度-视图的代码覆盖率,angular,unit-testing,code-coverage,Angular,Unit Testing,Code Coverage,在使用Angular(2,4,5,…)开发应用程序时,人们使用了大量的*ngIf=“which_condition”,而使用ngSwitch的频率也较低 但是,我还没有看到任何工具能够提供关于实际测试了多少代码的信息 显然,对于Typescript文件,有一种方法可以获得覆盖率,但我相信它提供了一种虚假的图像,即具有高覆盖率,在某种意义上说,大部分逻辑位于没有度量的视图中。。也就是说,如果我在Typescript上有90%的分支覆盖率,但在视图中仍然有两倍多的分支,那么实际覆盖率可能在45%到9

在使用Angular(2,4,5,…)开发应用程序时,人们使用了大量的
*ngIf=“which_condition”
,而使用ngSwitch的频率也较低

但是,我还没有看到任何工具能够提供关于实际测试了多少代码的信息

显然,对于Typescript文件,有一种方法可以获得覆盖率,但我相信它提供了一种虚假的图像,即具有高覆盖率,在某种意义上说,大部分逻辑位于没有度量的视图中。。也就是说,如果我在Typescript上有90%的分支覆盖率,但在视图中仍然有两倍多的分支,那么实际覆盖率可能在45%到90%之间


是否有任何工具能够测量角度视图的代码覆盖率并以有意义的方式显示它?

我没有研究模板的覆盖率,但是,您可以研究组件与单元测试

我通常会这样做:

it('',()=>{
  component.whatever_condition = true;
  const el = fixture.debugElement.query(By.css('someElement'));

  fixture.detectChanges();

  expect(el).toBeDefined();
});
我意识到这并没有给你覆盖范围,但它为你的模板提供了测试

NB考虑E2E测试是否是您需要的,而不是


我希望它有帮助

但是我没有用过。我真的不知道这有多大帮助。。角度模板编译为javascript,执行的内容与模板本身之间没有任何联系。。除非我错了,您只需要知道如何配置它。
*ngIf=“无论什么条件”
中的逻辑有多复杂。通常考虑逻辑所在的文件。你应该考虑在控制器中放置任何条件,因为你不需要测试视图。我完全同意,按照所有正常的标准,这是一个代码气味,然而,这是“角度2 +方式”,我相信我也需要找到一个相关的来源,这个声明…抱歉,但问题是关于覆盖率的衡量,而不是测试观点。我正在测试“角度法”,这正是你建议的,但问题是,我不知道测试的是什么,也不知道什么不是仅仅通过查看工具。我也知道,即使是代码覆盖率也不是真正的案例覆盖率,但这是不同的讨论。对我来说,似乎你想测试一些不属于你的责任的东西。Angular通过模型绑定根据数据更新视图,因此它超出了您的测试范围。可以假设框架做了预期的事情。我不是在测试Angular是否工作正常。。如果我解释一下你所说的-测试我用Typescript编写的条件不是我的责任,因为Typescript保证正确执行它们。。我希望你现在明白我的意思:)你能解释一下为什么吗?我的印象是,作为一名开发人员,我应该测试我正在编写的所有代码,我想你也在这样做(基于你的答案)。但是,如果您确实介绍了视图中的代码,您似乎并不感兴趣。。我得到一个事实,仅仅通过阅读代码,你就可以知道你是否有足够的测试,但我个人还是希望有一些自动化的度量。我的观点是,你在视图中没有(不应该)代码。
*ngIf
不是您的代码,它是一个角度指令,测试角度代码不是您的工作,就像您不测试for循环是否执行其工作一样