尝试对使用给定参数返回对象实例的静态方法进行单元测试。我只想测试传入此方法的属性,因为该对象包含我想要排除的createdAt
等自动填充字段。
在这种情况下,我是否必须使用expect().to.have.property()
之类的内容对单个属性进行测试,或者是否存在单行解决方案?
答案 0 :(得分:1)
我已经为这样的任务创建了一个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