javascript - Mocha : comparing two objects, 排除像 createdAt 这样的字段

标签 javascript unit-testing mocha.js

尝试对返回具有给定参数的对象实例的静态方法进行单元测试。我只想测试传递给此方法的属性,因为该对象具有我想排除的自动填充字段,例如 createdAt

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

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

最佳答案

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

在下面的示例中,我想比较两个对象:actual(它由测试返回)和 expected(预期结果)。 actual 中的某些字段是自动生成的 (_id),因此我只需要检查它们是否存在并具有特殊格式。一些我不想比较的字段(类型为 work 的电话、account.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

关于javascript - Mocha : comparing two objects, 排除像 createdAt 这样的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823856/

相关文章:

vb.net - Visual Studio 中的单元测试

unit-testing - 什么时候应该停止单元测试

node.js - 运行 Mocha 测试时出现 node-mssql "connection is closed",但在应用程序中运行良好

node.js - 如何使用 Node.js 完成/终止 Mocha/Istanbul 测试周期

javascript - 如何对依赖于外部库 "<script src="http ://stripe[. ..] 的 API 进行单元测试

javascript - Telerik - 将 JavaScript 文件包含在页面底部

javascript - 给定整数范围之间的随机数组,包含该范围内每个整数的至少一个实例

javascript - 每六个小时在页面加载时显示一个 Bootstrap 广告模式

javascript - 如何使用 Angular JS 打开 Bootstrap 模式?

python - 魔术模拟 assert_called_once 与 assert_called_once_with 奇怪的行为