У меня есть компонент, который динамически изменяет свой атрибут роли через HostBinding:
export class TestComponent {
@HostBinding('attr.role')
get role() {
return this.isListItem ? 'listitem' : null;
};
@Input() isListItem: boolean;
}
Но я изо всех сил пытаюсь написать модульные тесты, чтобы покрыть сценарии, когда isListItem
установлено на true/false/undefined
.
Например, это не работает:
beforeEach(() => {
fixture = MockRender(`
<app-test-component>
</app-test-component>
`);
debugElement = fixture.debugElement;
component = fixture.componentInstance;
el = debugElement.children[0].nativeElement;
fixture.detectChanges();
});
it('should have the role `listitem` if isListItem is true', () => {
component.isListItem = true;
fixture.detectChanges();
expect(el.getAttribute('role')).toEqual('listitem');
});
Вот ошибка, которую я получаю.
Error: Expected null to equal 'listitem'.
Я надеялся, установив isListItem
в true
, а затем используя fixture.detectChanges()
, это изменит HostBinding в тестируемом компоненте, но похоже, что это не так.