angular - 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
会返回未定义的情况?
解决方案
正如 Ivy 文档所说:
DebugElement.classes 为已添加然后随后删除的类返回 undefined(以前,添加和随后删除的类的值为 false)。
https://angular.io/guide/ivy-compatibility
(我遇到了完全相同的问题,它也破坏了我的十几个单元测试)
推荐阅读
- javascript - 删除部分网页 URL 或简单地重定向到 Tampermonkey 中更改的 URL 的方法?
- c++ - 变量在使用赋值语句赋值后恢复为先前的值
- reactjs - React Context 的范围是什么?
- android - 如何以编程方式更改 RecyclerView 的 fastScrollEnabled 属性?
- sql - Oracle 将多行转置为列,以便每个组的数据彼此相邻可见
- regex - Make regex quantifier length depend on previous capture group
- react-native - React Native 项目没有与 FlatList 正确分层
- javascript - 如何检查瓦片是否已经用 JavaScript 中的值填充?
- python - 在 Groupby 之后将两个数据框列除以订购时间
- terraform - 如何在 terraform 状态文件中填充新的输出变量?