我有一个测试来检查部分 DOM 元素是否已被 ngIf 删除。当我使用以下方法检查 DOM 时:fixture.debugElement.query(By.css(".button-area"))
result
是 null
或 DOM 元素。
如果result
为null
,则以下测试工作正常。但是,如果测试 result
包含一个元素,它不仅会导致测试失败,还会卡住浏览器。
测试看起来像这样:
var result = fixture.debugElement.query(By.css(".button-area"))
expect(result).toBe(null)
我也试过 expect(result).toEqual(null)
和 .toBeFalsy()
有相同的结果。
测试 DOM 元素是否已被正确删除的正确方法是什么?
更新 2017 年 1 月 23 日
我发现此问题特定于返回的元素:
fixture.debugElement.query(By.css(".button-area"))
这可能是一个带有 angular 2 或 jasmine 的错误。如果我使用 document.getElementByClassName("button-area")
这不是问题并且测试工作正常。
最佳答案
由于这似乎是 Jasmine 或 Angular 的错误,如果您处于绑定(bind)状态,这里有一个快速解决方法:
var result = fixture.debugElement.query(By.css(".button-area"))
expect(result === null).toBeTruthy()
问题解决后,您应该会在自己的代码中修复此问题。
关于angular - 当 expect(result).toBe(null) 测试失败时测试卡住。 ( Angular 2, Jasmine ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811609/