Karma由于“ExpressionChangedAfterItHasBeenCheckedError”而未通过测试

问题描述 投票:0回答:1

我有一个Web应用程序,在各种页面中抛出ExpressionChangedAfterItHasBeenCheckedError错误。这更像是一个警告,而不是一个错误,Web应用程序运行良好。

目前,没有这样的选项来修复代码以消除这个错误,我需要业力测试来忽略它。

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

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

有没有办法忽略这个特定的错误?

angular karma-jasmine
1个回答
0
投票

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

我不确定这是不是你的问题,但我的问题与我如何使用ngStyle有关。不知道为什么这解决了它,但我想我会在这里为其他寻找答案的人添加它。

错误

当我这样做时,我收到了错误:

模板

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

widthValue正在计算AfterViewInit

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

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

当我将逻辑切换到组件并只传入生成的样式对象时,它很好。

模板

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

零件

labelWidth(checked: boolean): SafeStyle {
  return {
    width: `${(checked ? this.maxLabelWidth : 0)}px`,
  };
}
© www.soinside.com 2019 - 2024. All rights reserved.