angular - 测试验证 DOM 中是否存在组件元素 - Jasmine 和 Angular

标签 angular testing angular5

Stack Overflow 社区您好,

我在 Angular 5 中编写简单的 Jasmine 单元测试来验证组件的 DOM 中是否存在元素时遇到问题。我成功测试了标准 HTML 元素,例如 p: expect(fixture.debugElement.query(By.css('p')).nativeElement).toBeTruthy();

但是,这会导致 TypeError:无法读取 Angular 组件的 null 属性“nativeElement”。例如,带有 app-movie 选择器的电影组件:

it ('在 DOM 中应该有一个名为 app-root 的元素选择器', () => { Expect(fixture.debugElement.query(By.css('app-movie')).nativeElement).toBeTruthy();

您能建议一下如何做到这一点吗?非常感谢!

最佳答案

检查调试元素而不是其 native 元素。

const debugElement = fixture.debugElement.query(By.css('p'));
expect(debugElement).toBeTruthy();

如果我们按照问题描述在 native 元素上进行测试,那么如果找不到该元素,Jasmine 将抛出错误,因为 debugElement 本身将为空(null)。错误示例:

TypeError: Cannot read property 'nativeElement' of null

关于angular - 测试验证 DOM 中是否存在组件元素 - Jasmine 和 Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49976513/

相关文章:

angular - Angular中SwUpdate.activateUpdate()的作用是什么?

node.js - 在 Promise 处理程序中使用断言的好策略是什么

angular - 如何在 laravel 中实现 Angular 服务器端渲染?

javascript - 如何在 typescript 中获取 mm-dd-yyyy hh-mm-ss 格式的日期和时间?

Angular 2 阅读更多指令

javascript - ionic 2 : "WARNING: sanitizing unsafe URL value" error

javascript - 可能有一行 Div,每个具有不同的左起始位置和宽度以填充相邻的同级?

testing - 使用 selenium 的对话框操作

Karma 的 Angular Testing 错误

angular - 错误 TS2355 : A function whose declared type is neither 'void' nor 'any' must return a value