Тестирование компонентов Angular — запрос по компонентам

При тестировании DOM-представления @Component вы можете запрашивать его вложенные элементы через его фикстуру.

fixture.debugElement.queryAll(By.css('.example'));

Вы также можете фильтровать по @Directive

fixture.debugElement.queryAll(By.directive(RouterLinkDirectiveStub));

Теперь предположим, что у вас есть внутренний @Component NzButtonComponent, используемый вот так

<button nz-button>Example</button>

Как я могу точно запросить его? Нет By.component(...).


person LppEdd    schedule 10.05.2019    source источник
comment
Используйте селектор атрибутов CSS: fixture.debugElement.nativeElement,querySelector(['nz-button']) as HTMLButtonElement;   -  person The Head Rush    schedule 10.05.2019


Ответы (2)


Вы можете выбрать атрибут CSS, если используете nativeElement вместо debugElement:

fixture.debugElement.nativeElement.querySelector('[nz-button]') as HTMLButtonElement;

Для нескольких элементов можно использовать метод querySelectorAll.

person The Head Rush    schedule 10.05.2019
comment
Это работает, даже если есть несколько элементов? - person LppEdd; 10.05.2019
comment
nativeElement также имеет метод querySelectorAll. - person The Head Rush; 10.05.2019
comment
Разве это не ('[nz-button]') ? Исправлено. - person LppEdd; 10.05.2019

Запрос как директива

Возможно, вы можете использовать

fixture.debugElement.query(By.directive(AnyComponent)) возвращает DebugElement этого компонента

Это работает, потому что в Angular Component наследуется после Directive

person Artemee Senin    schedule 30.08.2019