在Angular单元测试中从HTML获取routerLink属性

时间:2018-07-08 15:58:55

标签: javascript angular unit-testing jasmine angular-test

我具有以下HTML属性:

   <ul>   
      <li class="nav-item" routerLinkActive="active">
        <a class="nav-link" [routerLink]="['/home']">Home</a>
      </li>
    </ul>

我现在想在单元测试中获取href作为值。到目前为止,我的测试用例是:

  it('should navigate have login navigation', () => {
     const debugElements = fixture.debugElement.queryAll(By.css('a.nav-link'));
     debugElements.forEach(x  => console.log(x.properties['href']));
  });
});

但这是每次undefined。如何从rounterLink指令中获取href?顺便说一句,我不需要做fixture.detectChanges();,因为我没有在这个特定组件中使用生命周期挂钩。

1 个答案:

答案 0 :(得分:1)

您实际上必须运行fixture.detectChanges()。这不仅限于生命周期挂钩,而且通常涉及变更检测(Angular所做的几乎所有 magic )。

我创建了一个Stackblitz,表明没有detectChanges并使用它运行测试失败。