Mocha:比较两个对象,排除createdAt

时间:2017-08-22 17:39:43

标签: javascript unit-testing mocha

尝试对使用给定参数返回对象实例的静态方法进行单元测试。我只想测试传入此方法的属性,因为该对象包含我想要排除的createdAt等自动填充字段。

在这种情况下,我是否必须使用expect().to.have.property()之类的内容对单个属性进行测试,或者是否存在单行解决方案?

http://chaijs.com/api/bdd/#method_property

1 个答案:

答案 0 :(得分:1)

我已经为这样的任务创建了一个node.js模块:仅验证预期对象中提供的那些字段。

在下面的示例中,我想比较两个对象:actual(由测试返回)和expected(预期结果)。 actual中的某些字段是自动生成的,(_id),所以我只需检查它们是否存在并具有特殊格式。我不想比较的一些字段(手机的类型为workaccount.number)。因此expected对象仅包含测试所需的字段:

// Some test method returns this object
let actual = {
  _id: '5945bf36ccb3fa0011e8533c',
  name: 'John',
  email: 'john@mail.com',
  phones: [
    { type: 'mobile', number: '1234567' }
    { type: 'work', number: '567382' }
  ],
  account: {
    number: '11111',
    registered: '2010-04-21'
  },
  createdAt: '2017-02-03'
};

// Ned to do the following assertions:
//   _id is exists
//   name and email match
//   mobile phone is exists and it's a number
//   account registered match
let expected = {
  _id: '_mock_',
  name: 'John',
  email: 'john@mail.com',
  phones: [
    { type: 'mobile', number: /^d{1,10}$/ }
  ],
  account: {
    registered: '2010-04-21'
  }
}

nassert.assert(actual, expected); // should pass

链接:n-assert