当前位置:  开发笔记 > 编程语言 > 正文

当期望(结果).toBe(null)测试失败时,测试冻结.(Angular 2,Jasmine)

如何解决《当期望(结果).toBe(null)测试失败时,测试冻结.(Angular2,Jasmine)》经验,为你挑选了1个好方法。

我有一个测试,检查部分DOM元素是否已被ngIf删除.当我使用以下方法检查DOM时:fixture.debugElement.query(By.css(".button-area"))resultnullDOM元素或者是DOM元素.

如果resultnull,那么以下测试工作正常.但是,如果测试result包含一个元素,它不会简单地通过测试,它会冻结浏览器.

测试看起来像这样:

var result = fixture.debugElement.query(By.css(".button-area"))
expect(result).toBe(null)

我也尝试过expect(result).toEqual(null),.toBeFalsy()结果相同.

测试DOM元素是否已正确删除的正确方法是什么?

更新 1/23/2017

我发现这个问题是由返回的元素指定的:

fixture.debugElement.query(By.css(".button-area"))

这可能是角2或茉莉的错误.如果我使用document.getElementByClassName("button-area")它不是一个问题,测试工作正常.



1> ed-tester..:

由于这似乎是Jasmine或Angular的一个错误,如果您处于绑定状态,这里有一个快速的解决方法:

var result = fixture.debugElement.query(By.css(".button-area"))
expect(result === null).toBeTruthy()

当问题得到解决时,您应该在自己的代码中修复此问题.


请查看有关此问题的说明:https://medium.com/@martatatiana/poor-detective-angular2-browser-crash-and-debugelement-f0a651dbf33似乎基本上在遍历debugElement时会产生错误,因为它有一棵巨大的树依赖性.因此,在expect函数参数中避免使用大对象.
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有