繁体   English   中英

Jasmine 如何模拟parentElement

[英]Jasmine how mock parentElement

您好,我在测试中遇到此错误,我真的不知道如何修复它,我正在使用 Jasmine 和 Angular。

在指令中,我必须读取 elment 的 parentNode,但测试失败。 知道如何模拟它吗?

在此处输入图像描述

这是代码

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 */ ]}});
});

hacky 部分是component as any因为您不能监视私有方法。 我认为上述应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM