Jasmine 如何模拟 parentElement
Jasmine how mock parentElement
你好,我在测试中遇到了这个错误,我真的不知道如何解决它,我正在使用 Jasmine 和 Angular。
在指令中,我必须读取元素的父节点,但测试失败。知道如何模拟它吗?
这是代码
private getParentElement() {
return this.element.nativeElement.closest('th');
}
private setActiveSortingCellOnLoad(): void {
const selectors = "[name='arrows-sort-down'] , [name='arrows-sort-up']";
const headerCells = this.getParentElement().parentElement.childNodes;
headerCells.forEach(cell => {
if (cell.childNodes.length > 0) {
const el = cell.querySelectorAll(selectors);
if (el.length === 1) {
cell.classList.add(this.activeSortClass);
}
}
});
}
由于 getParentElement
是私有的,我们将不得不以一种骇人听闻的方式监视它。
尝试以下操作:
it('does abc', () => {
spyOn((component as any), 'getParentElement').and.returnValue({ parentElement: { childNodes: [/* mock childNodes here */ ]}});
});
棘手的部分是 component as any
,因为您无法监视私有方法。我认为以上应该可行。
你好,我在测试中遇到了这个错误,我真的不知道如何解决它,我正在使用 Jasmine 和 Angular。
在指令中,我必须读取元素的父节点,但测试失败。知道如何模拟它吗?
这是代码
private getParentElement() {
return this.element.nativeElement.closest('th');
}
private setActiveSortingCellOnLoad(): void {
const selectors = "[name='arrows-sort-down'] , [name='arrows-sort-up']";
const headerCells = this.getParentElement().parentElement.childNodes;
headerCells.forEach(cell => {
if (cell.childNodes.length > 0) {
const el = cell.querySelectorAll(selectors);
if (el.length === 1) {
cell.classList.add(this.activeSortClass);
}
}
});
}
由于 getParentElement
是私有的,我们将不得不以一种骇人听闻的方式监视它。
尝试以下操作:
it('does abc', () => {
spyOn((component as any), 'getParentElement').and.returnValue({ parentElement: { childNodes: [/* mock childNodes here */ ]}});
});
棘手的部分是 component as any
,因为您无法监视私有方法。我认为以上应该可行。