JSUnit中的assertEquals()实际上做了什么?

时间:2016-02-16 14:04:50

标签: javascript html5 unit-testing assertions jsunit

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

我制作了一个存根,也就是我的预加载器的假对象,我想检查它对这个假预加载器的状态。

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

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

意思是它们不是同一个对象。

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

1 个答案:

答案 0 :(得分:2)

assertEquals将执行equal-equal-equal操作,因此会执行以下操作:

 gamePreloader === myPreloader

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

assertEquals(gamePreloader.status, myPreloader.status)

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

Object.keys(gamePreloader).forEach(function(key) {
  assertEquals(gamePreloader[key], myPreloader[key]);
});