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

标签 javascript html unit-testing assertions jsunit

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

我为我的预加载器创建了一个 stub ,也就是假对象,我想根据这个假预加载器检查它的状态。

我使用了 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]);
});

关于javascript - JSUnit 中的 assertEquals() 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434670/

相关文章:

unit-testing - karma-runner 有更好的用户界面吗?

javascript - 当字段值无效时表单提交

javascript - 如何完全从 JavaScript 添加新视频?

html - CSS 对齐嵌套列表

html - Qt 中 HTTP GET 响应的奇怪编码

c# - 对 SqlCommand 的扩展方法进行单元测试的方法

javascript - 使用 Three.js 如何沿指定平面移动对象?

javascript - 我正在尝试折叠 onclick 方法上的导航栏,但它不起作用

html - Bootstrap 优先考虑垂直堆叠

java - 具有嵌套依赖项的测试类