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



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

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

我使用了assertEquals(gamePreloader,myPreloader(,但测试失败并显示错误:

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

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

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

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

 gamePreloader === myPreloader

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

assertEquals(gamePreloader.status, myPreloader.status)

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

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

相关内容

  • 没有找到相关文章

最新更新