如何使用 Jasmine 测试包裹在 ng-container 中的元素是否存在 Angular 6?
How can I test elements wrapped in an ng-container exist for Angular 6 with Jasmine?
我正在尝试编写一个单元测试来查看包裹在 <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 容器中的元素而无需绕过它?
谢谢!
来自评论,
您的单元测试未通过,因为您正在检查 toBeNull()
,这是错误的。相反,您应该检查
expect(debugEl.query(By.css('#login'))).not.toBeNull();
或
expect(debugEl.query(By.css('#login'))).toBeDefined();
我正在尝试编写一个单元测试来查看包裹在 <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 容器中的元素而无需绕过它?
谢谢!
来自评论,
您的单元测试未通过,因为您正在检查 toBeNull()
,这是错误的。相反,您应该检查
expect(debugEl.query(By.css('#login'))).not.toBeNull();
或
expect(debugEl.query(By.css('#login'))).toBeDefined();