在业力测试(Angular 4.0)中按类名获取两个div

Kac*_*ers 2 javascript unit-testing css-selectors karma-runner angular

我有这样的看法:

<div>
 <div class="header-title">Example title 1</div>
</div>

<div>
 <div class="header-title">Example title 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

在我的业力测试中,我想按类名调查所有 div 并检查内部文本是否正确,因此我在测试中有以下代码:

[...]
debugTest = fixture.debugElement.query(By.css('.header-title'));
elementTest = debugTest.nativeElement;
[...]

it('should component div has a correct value', () => {
    fixture.detectChanges();
    const content = elementTest.textContent;
    expect(content).toContain('Example Title 1');
});
Run Code Online (Sandbox Code Playgroud)

以下代码有效,但我总是使用 .header-title 类获得第一个 dom。如何提取下一个?如果我有 20 个具有相同类名的 div,如何测试它们呢?

Ami*_*ani 9

使用queryAll()代替query(),它返回一个数组。

query()返回 single DebugElement,它始终是第一个匹配元素,而queryAll()返回DebugElement[].

debugTest = fixture.debugElement.queryAll(By.css('.header-title')); 
Run Code Online (Sandbox Code Playgroud)

这样你就可以访问像

elementTest1 = debugTest[0].nativeElement;
elementTest2 = debugTest[1].nativeElement;
Run Code Online (Sandbox Code Playgroud)