javascript - JSMock 的奇怪问题

标签 javascript unit-testing foreach

有人可以解释一下这里发生了什么以及如何解决它吗?我正在使用 JSMock,并在 spec.js 中执行以下代码:

for (var t in []) {
    alert(t)
}

...导致我的浏览器警告“eachIndexForJsMock”(当它根本不应该执行alert命令时)。这搞乱了我的 for every 循环。我该如何修复它?

最佳答案

问题是 JSMock augments the Array.prototype object .

for-in 语句旨在用于枚举对象属性,对于数组和类数组1对象,它是始终建议使用迭代循环,例如:

for (var i = 0; i < arr.length; i++) {
  //...
}

您应该避免在类似数组的对象上使用 for-in,因为:

  • 不保证迭代顺序,索引可能不会按数字顺序访问。
  • 还枚举了继承的属性。

另请参阅:

[ 1 ] 我所说的类数组是指任何包含按顺序编号的属性和length属性的对象。

关于javascript - JSMock 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277662/

相关文章:

unit-testing - Elasticsearch 6.2在单元测试中启动localhost http节点

javascript - 正则表达式匹配javascript中的特定字符串

javascript - NestJS无法解析JWT_MODULE_OPTIONS的依赖关系(同样的问题,不同的解决方案)

javascript - 如何在单击按钮时更改背景图像?

javascript - Angular2 Material SnackBar 集成问题

java - 如何在 JUnit 测试中模拟 Camel 处理器

.net - 存储库本身通常不经过测试?

c# - 如何正确取消 Parallel.Foreach?

php - 使用 PHP foreach 解析 JSON 数组

php - 如何使用 foreach 创建一个独特的类?