首页 > 解决方案 > 为什么 jasmine 单元测试中 document.getElementsByClassName() 的结果为空?

问题描述

我正在尝试为我的角度组件编写单元测试。该模板包含以下行:

<p [innerHTML]="dialogMessage | highlightError | highlightWarning" class="text-left"></p>

在打字稿文件中,我通过删除一些 html 标签来修改对话框消息:

const highlightedElements = document.getElementsByClassName('result-element');

if (highlightedElements && highlightedElements.length) {
// some modifications
}

单元测试:

component.dialogMessage = '<span class="result-element">test</span>';
component.searchString = '';

fixture.detectChanges();

// act
component.search();

此代码在程序中使用时有效,但在单元测试中无效。在单元测试中,highlightedElements集合始终为空(它不执行 if 块中的代码)。innerHTML是不是因为 还是我必须等待某些东西完成加载?我还尝试document.getElementsByClassName()通过监视该方法从该方法中返回某些内容,但随后又发生了另一个错误。

标签: htmlangularunit-testingjasmine

解决方案


推荐阅读