How can I check that two objects have the same set of property names?

后端 未结 7 1302
傲寒
傲寒 2020-11-28 06:04

I am using node, mocha, and chai for my application. I want to test that my returned results data property is the same \"type of object\" as one of my model objects (Very si

7条回答
  •  一个人的身影
    2020-11-28 06:29

    If you want deep validation like @speculees, here's an answer using deep-keys (disclosure: I'm sort of a maintainer of this small package)

    // obj1 should have all of obj2's properties
    var deepKeys = require('deep-keys');
    var _ = require('underscore');
    assert(0 === _.difference(deepKeys(obj2), deepKeys(obj1)).length);
    
    // obj1 should have exactly obj2's properties
    var deepKeys = require('deep-keys');
    var _ = require('lodash');
    assert(0 === _.xor(deepKeys(obj2), deepKeys(obj1)).length);
    

    or with chai:

    var expect = require('chai').expect;
    var deepKeys = require('deep-keys');
    // obj1 should have all of obj2's properties
    expect(deepKeys(obj1)).to.include.members(deepKeys(obj2));
    // obj1 should have exactly obj2's properties
    expect(deepKeys(obj1)).to.have.members(deepKeys(obj2));
    

提交回复
热议问题