我想我在这里只是遗漏了一些简单的东西,但我无法弄清楚我在哪里左转。
我正在编写测试以检查导航菜单中的链接。我想获取整个元素数组并检查以确保我的链接在那里。我使用棱角分明4材料,角4,茉莉和业力来运行你所看到的一切。
这是HTML
<md-toolbar color="primary">
<button md-icon-button [md-menu-trigger-for]="menu">
<md-icon class="dark">menu</md-icon>
</button>
<md-menu #menu="mdMenu">
<button md-menu-item [routerLink]="['posts']">
<md-icon>announcement</md-icon>
<span>Posts</span>
</button>
<button md-menu-item [routerLink]="['']">
<md-icon>home</md-icon>
<span>Home</span>
</button>
</md-menu>
</md-toolbar>
测试代码如下:
describe('HeadercomponentComponent', () => {
let component: HeadercomponentComponent;
let fixture: ComponentFixture<HeadercomponentComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ HeadercomponentComponent ],
imports: [MdIconModule, MdMenuModule, MdCoreModule, RouterTestingModule, MdButtonModule]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HeadercomponentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should check router link for posts page', ()=>{
let debugElements = fixture.debugElement.queryAll(By.directive(RouterLink));
let index = debugElements.findIndex(de=>de.properties['routerLink'] == "['posts']");
expect(index).toBeGreaterThan(-1);
});
});
要提供帮助,请参阅我的调试器向我展示的内容:
有什么想法我为什么不通过routerLink分配拿起所有不同的按钮?
答案 0 :(得分:0)
看起来这个帖子已经有一段时间了,而且一些Material语法已经改变了,但我遇到了类似的问题,最终能够让它运行起来。显然,菜单实际上并不在DOM中,直到触发菜单触发器,并且无法搜索。在您的示例测试代码中,您应该能够在fixture查询之前添加以下内容,这将触发菜单并允许搜索菜单项。
const menuTrigger = fixture.debugElement.query(By.css('button'));
menuTrigger.triggerEventHandler('click', null);