当 expect(result).toBe(null) 测试失败时测试冻结。 (Angular2、茉莉花)
Test freezes when expect(result).toBe(null) fails test. (Angular 2, Jasmine)
我有一个测试,检查部分 DOM 元素是否已被 ngIf 删除。当我使用 fixture.debugElement.query(By.css(".button-area"))
检查 DOM 时,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"))
这可能是 bug angular 2 或 jasmine。如果我使用 document.getElementByClassName("button-area")
这不是问题并且测试工作正常。
由于这似乎是 Jasmine 或 Angular 的错误,如果您遇到困难,这里有一个快速解决方法:
var result = fixture.debugElement.query(By.css(".button-area"))
expect(result === null).toBeTruthy()
问题解决后,您应该会在自己的代码中修复此问题。
我有一个测试,检查部分 DOM 元素是否已被 ngIf 删除。当我使用 fixture.debugElement.query(By.css(".button-area"))
检查 DOM 时,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"))
这可能是 bug angular 2 或 jasmine。如果我使用 document.getElementByClassName("button-area")
这不是问题并且测试工作正常。
由于这似乎是 Jasmine 或 Angular 的错误,如果您遇到困难,这里有一个快速解决方法:
var result = fixture.debugElement.query(By.css(".button-area"))
expect(result === null).toBeTruthy()
问题解决后,您应该会在自己的代码中修复此问题。