3

I'm updating a repo that used to use Angular 8. In a test, using TestBed, I'm checking if a class exists using: fixture.debugElement.classes['my-class'].toBe(false)

After updating to Angular 9, this test no longer works, as the expression no longer returns false when the class doesn't exist, it returns undefined. I've fixed the test using: fixture.debugElement.classes['my-class'].toBeFalsy() by i'm afraid something else is failing silenty.

Checking Angular documentation, classes should only return a boolean: classes: { [key: string]: boolean; }

Is there any situation where classes will return undefined?

1 Answers1

1

As the Ivy documentation says:

DebugElement.classes returns undefined for classes that were added and then subsequently removed (previously, classes added and later removed would have a value of false).

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

(I was having exatcly the same issue, and it broke a dozen of my unit tests as well)

Maksym
  • 458
  • 4
  • 23