如何在单元测试中比较JavaScript对象
How to compare JavaScript objects in a unit test?
我想知道在单元测试中比较对象的正确方法。为了这个例子的目的,我使用assert
和mocha
来测试一个简单的库mylib
,方法method
返回一个对象。
var assert = require("assert");
var mylib = require("../src/mylib");
describe("method", function() {
it("does something clever and returns an object", function() {
assert.equal(
JSON.stringify({/* expected object */}),
JSON.stringify(mylib.method(["items", "in", "the", "list"])));
});
});
上面的方法很有效,但我不知道使用JSON.stringify
是否是推荐的做法。我这样做对吗?
您不应该使用JSON.stringify
,这种方法的问题是根据MDN JSON.stringify()
非数组对象的属性不能保证以任何特定的顺序进行字符串化。不要依赖于字符串化中同一对象内属性的排序。
从那时起,您可以将{"a":2, "b":3}
与{"b":3, "a":2}
进行比较。
相反,您应该使用例如assert.deepEqual
(老实说,我从未使用过assert
,但在命名时,它应该是正确的函数)
相关文章:
- 无法比较javascript变量
- 比较javascript中的浮动并更改最高浮动的颜色
- 比较Javascript中的两个字符串时出错
- 比较javascript数组中的数值
- 比较 JavaScript 中的值
- 如何比较 JavaScript 格式为 2011-jan-21 的两个日期
- 是否有必要使用 === 来比较 Javascript 中的字符串,或者 == 就足够了
- 使用Jquery比较Javascript中的两个列表/表
- 比较javascript中的两个数组
- 如何在单元测试中比较JavaScript对象
- 比较javascript/jquery中的两个字符串
- 比较Javascript中的两个数组
- 比较javascript中的数组时出错
- 比较javascript中的函数指针
- 无法比较 javascript 数组中的两个值
- 如何仅针对某些属性比较 JavaScript 中的对象
- 循环并比较JavaScript对象
- 比较 JavaScript 中的变量
- 比较Javascript/Jquery中的确切结果
- 比较 JavaScript 日期对象