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

时间:2017-01-23 16:57:41

标签: angular dom jasmine karma-jasmine ngif

我有一个测试,用于检查ngIf是否删除了部分DOM元素。当我使用fixture.debugElement.query(By.css(".button-area"))检查DOM时,resultnull或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 个答案:

答案 0 :(得分:5)

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

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

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