测试对象是否部分包含在具有mocha的数组中

时间:2016-09-06 15:59:50

标签: mocha chai

使用Mocha和Chai,我通常使用haveProperties来测试对象是否部分包含另一个对象:

class Foo {
    constructor(value) {
        Object.defineProperty(this, '_str', {
            value
        });
    }

    toString() {
        return this._str;
    }
}

const bar = new Foo('bar');
const twinBar = new Foo('bar');
const baz = new Foo('baz');

const owner = {
    a: 4,
    b: bar,
    c: 7
};

const partial1 = {
    a: 4,
    b: twinBar
};

const partial2 = {
    a: 4,
    b: baz
};


owner.should.haveProperties(partial1); // success
owner.should.haveProperties(partial2); // failure

请注意,haveProperties可以正常工作"甚至对于没有可枚举属性的对象,虽然bartwinBar被认为是不同的,但barbaz被视为等于。

现在,我需要知道我的部分对象是否包含在haveProperties提供的深度等式约束中)到对象的数组

const ownerArr = [{
    a: 4,
    b: bar,
    c: 7
}, {
    a: 3
}];


ownerArr.should.(????)(partial1); // should succeed
ownerArr.should.(????)(partial2); // should fail

而且我不知道如何实现这一点。

1 个答案:

答案 0 :(得分:1)

您是否尝试过Chai Things

在你的情况下,这应该有效(未经测试)

ownerArr.should.include.something.that.deep.equals(partial)

试试这个:

 ownerArr.should.shallowDeepEqual(partial);

您可能需要npm install chai-shallow-deep-equal才能使上述工作

确保安装了Chai Things插件

另见this。该链接中的第二个答案也应该有效。