1

我正在尝试编写一个单元测试来查看是否<ng-container>存在包含在其中的元素,但是我的测试失败了,因为似乎元素是以任何方式创建的。

我的代码是:

HTML

<ng-container *ngIf="router.url === '/login'">
    <div id="login"></div>
</ng-container>

单元测试

it('should display the login div when on the login page', fakeAsync(inject([Router], (router: Router) => {
    router.navigate(['/login']);
    fixture.detectChanges();
    expect(debugEl.query(By.css('#login'))).toBeNull();
})));

我宁愿不必将我的元素包裹<ng-container>在另一个元素中;我在网上看到一些文章说要这样做,但是有没有办法检查 Angular 容器中的元素而无需绕过它?

谢谢!

4

1 回答 1

2

从评论来看,

您的单元测试未通过,因为您正在检查toBeNull(),这是错误的。相反,您应该检查类似

expect(debugEl.query(By.css('#login'))).not.toBeNull(); 

或者

expect(debugEl.query(By.css('#login'))).toBeDefined();
于 2018-07-23T16:57:58.480 回答