angular - 当 expect(result).toBe(null) 测试失败时测试卡住。 ( Angular 2, Jasmine )

标签 angular dom jasmine karma-jasmine angular-ng-if

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

如果resultnull,则以下测试工作正常。但是,如果测试 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/

相关文章:

angular - Angular 组件中 Openslyers 导入错误

html - 无法从 npm 模块内联字体

javascript - 选择具有特定属性的标签(仅)

angular - Chrome 开发工具可以帮助找出 Angular 组件名称吗?

javascript - Angular/ typescript : arrays in typescript changing when an independent element got changed

javascript - 返回值和/或违反 JavaScript 中的 promise

使用 Jasmine 测试 Backbone 模型的触发方法

Angular 5 - 我们如何测试 router.navigate([id],{relativeTo : this. _activatedRoute}])

node.js - Node + Express + Pug 中访问 DOM 的正确方法

javascript - 如何将所有匹配元素视为一个集合?