html - 为什么 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()
通过监视该方法从该方法中返回某些内容,但随后又发生了另一个错误。
解决方案
推荐阅读
- mongodb - 从其他来源(如 mongo)将数据导入 holochain 的最佳方法是什么?
- angular - 覆盖范围未定义
- visual-studio-2017 - 检索 IIS Express
- javascript - 隐藏的测试不断失败
- angular - ngrx 效果抛出“调度了一个无效的动作:未定义”
- amazon-web-services - Cloud-Custodian:仅删除特定 DynamoDB 表的特定备份
- reactjs - 将 mapDispatchToProps 定义为对象
- android - 在 C 和 Fmod 中为 Android 编译终端 mp3player:函数获取未定义的引用
- docker - Gitlab中的Nginx日志非常大
- git - Git强制合并