我使用 Karma/Jasmine 为 angular 的 ag-grid 编写了一个测试用例。在我的测试用例中,只是检查 ag-grid 标头并收到类似“fixture.nativeElement.query is not a function”的错误,但我不确定这是否是我编写的正确方法。如果有人有想法请帮助我。
这是我的测试用例
it('to test the column headers',()=>{
fixture.nativeElement.query(By.css(".ag-fresh"))
.map(function (header){
return header.getText()
}).then(function(headers){
expect(headers).toEqual(['color','qty','price']);
});
});
您应该在
query()
上使用fixture.debugElement
。而且我认为你不需要map
这里的结果。
fixture.debugElement.query(By.css(".ag-fresh")).nativeElement
应该为你做。
可以采取以下方法来获取单元测试中的元素
一般来说,建议使用
debugElement
在 Angular 测试中与 DOM 交互,因为它提供了更高级别的抽象,专门为测试 Angular 组件而设计。
fixture = TestBed.createComponent(<Component>)
// using querySelector
const element = fixture.nativeElement as HTMLElement
const domElem = element.querySelector(<CSS Selector>)
// using debugElement
let de = fixture.debugElement.query(By.css(<CSS Selector>)) as DebugElement
const element = de.nativeElement as HTMLElement;