【问题标题】:What are the cases when should.deep.equal fails but comparison using JSON.stringify works fine?什么情况下 should.deep.equal 失败但使用 JSON.stringify 比较可以正常工作?
【发布时间】:2016-08-15 12:40:07
【问题描述】:
函数返回一个对象数组。当我使用JSON.stringify 将实际结果与预期结果进行比较时,值是相同的。但是使用should.deep.equal 或_.isEqual 进行比较失败。有人遇到过这样的问题吗?
【问题讨论】:
标签:
javascript
angularjs
unit-testing
chai
should.js
【解决方案1】:
我已经意识到问题所在。这是因为JSON.stringify 错过了具有undefined 值的字段。例如。将JSON.stringify 应用于以下对象{field: 'value', undefinedField: undefined} 的结果是{"field": "value"}。因此
JSON.stringify({field: 'value', undefinedField: undefined}) === JSON.stringify({field: 'value'})`
但是
{field: 'value', undefinedField: undefined}.should.deep.equal({field: 'value'})
失败