【问题标题】:Asserting object equality in Javascript test (chai)在 Javascript 测试中断言对象相等 (chai)
【发布时间】:2015-11-26 10:05:31
【问题描述】:

我需要在我的 JavaScript 单元测试中声明两点之间的相等性:

var pnt1 = {x: 2, y: 3};

var pnt2 = {x: 2, y: 3};

当我这样做时

assert.equal(pnt1, pnt2);

它说点是不同的。我可以从检查中排除对象是不同实例的事实(因此实际上它们“不相等”)吗?

我想避免创建一个断言列表,每个要测试的字段一个(在本例中为 .x.y

【问题讨论】:

    标签: javascript unit-testing testing chai


    【解决方案1】:

    .deepEqual代替.equal

    assert.deepEqual(pnt1, pnt2);
    

    这将执行深度比较,而不是简单地检查相等性。

    【讨论】:

    • 太棒了。所以 deepEqual 将遍历对象直到基本类型(我们没有不同实例的概念,至少在 JS 中)。
    • 这就是它的要点,是的,@GianlucaGhettini。
    • 如果不是很明显,assert.deepEqual({a: 1, b: 2}, {b: 2, a: 1}) 也是如此,即使 OP 的示例对象键的顺序相同。
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多