1

我正在使用我编写的 HTML5/JS 游戏和 JSUnit 测试运行程序进行一些单元测试练习。我对它的简单性感到满意,但这种简单性甚至在文档中也是如此,因为没有解释真正 assertEquals() 的作用。

我为我的预加载器制作了一个存根,又名假对象,我想对照这个假的预加载器检查它的状态。

我使用了 assertEquals(gamePreloader, myPreloader) 但测试失败并出现错误:

Expected <[object Object]> (Object) but was <[object Object]> (Object)

这意味着它们不是相同的对象。

assertEquals() 是检查对象的状态还是在内存中检查这两个对象实际上是同一个对象?

4

1 回答 1

2

assertEquals执行一个equal-equal-equal操作,所以它会:

 gamePreloader === myPreloader

在这种情况下,它只会在对象完全相同的情况下返回 true,如果它们具有相同的值则不会。如果你想测试某个对象的属性值,你必须专门测试它,例如:

assertEquals(gamePreloader.status, myPreloader.status)

如果你想测试所有的值,那么你将需要一个循环,或者类似的东西:

Object.keys(gamePreloader).forEach(function(key) {
  assertEquals(gamePreloader[key], myPreloader[key]);
});
于 2016-02-16T14:28:08.390 回答