因果因“ ExpressionChangedAfterItHaHasBeenCheckedError”而导致测试失败

时间:2018-09-20 09:22:16

标签: angular karma-jasmine

我有一个Web应用程序,它在各个页面中引发ExpressionChangedAfterItHasBeenCheckedError错误。这更像是警告而不是错误,并且Web应用程序运行良好。

当前,尚无固定代码以消除此错误的选项,我需要进行业力测试来忽略它。

当我进行业力测试时,我得到了:

Failed: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

有什么办法可以忽略这个特定的错误?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。通常,即使我在运行应用程序的控制台中遇到此错误,它也不会使Karma / Jasmine测试失败(在这种情况下,我实际上并没有在应用程序中得到控制台错误,仅在Karma中)。

我不确定这是否是您的问题,但我的工作与我使用ngStyle的方式有关。不知道为什么为什么解决了这个问题,但我想我会在这里添加它给其他任何寻求答案的人。

错误

执行此操作时出现错误:

模板

<div [ngStyle]="{ 'width.px': (!checked ? widthValue : 0) }">Blah</div>

正在计算widthValue的{​​{1}}。

我也尝试过这种格式(这也给了我错误):

AfterViewInit

解决方案

当我将逻辑切换到组件并刚刚传入结果样式对象时,就很好了。

模板

<div [ngStyle]="{ 'width': (!checked ? widthValue : 0) + 'px' }">Blah</div>

组件

<div [ngStyle]="labelWidth(checked)">Blah</div>