首页 > 解决方案 > Angular9 debugElement.classes['my-class'] 现在返回 undefined

问题描述

我正在更新一个曾经使用 Angular 8 的存储库。在测试中,使用 TestBed,我正在使用以下方法检查一个类是否存在: fixture.debugElement.classes['my-class'].toBe(false)

更新到 Angular 9 后,这个测试不再起作用,因为当类不存在时表达式不再返回 false,它返回 undefined。我已经使用以下方法修复了测试: fixture.debugElement.classes['my-class'].toBeFalsy() 恐怕还有其他东西在静默中失败。

检查 Angular 文档,类应该只返回一个布尔值: classes: { [key: string]: boolean; }

有没有classes会返回未定义的情况?

标签: angularangular9testbed

解决方案


正如 Ivy 文档所说:

DebugElement.classes 为已添加然后随后删除的类返回 undefined(以前,添加和随后删除的类的值为 false)。

https://angular.io/guide/ivy-compatibility

(我遇到了完全相同的问题,它也破坏了我的十几个单元测试)


推荐阅读