A function returns an array of objects. When I compare the actual result with an expected result using JSON.stringify the values are identical. However comparison using should.deep.equal or _.isEqual fails. Had anyone encountered such issue?
Asked
Active
Viewed 773 times
1
Alexander Elgin
- 6,796
- 4
- 40
- 50
-
1Could you add some sample objects to your question? – Quill Apr 22 '16 at 03:46
-
1I'm not familiar with `should.js`, but is it possible that they are checking not just values but references also? The underscore issue seems to be the same as [this SO question](http://stackoverflow.com/questions/19316043/underscore-isequal-and-json). – Matthew Herbst Apr 22 '16 at 03:46
1 Answers
1
I've realized what the issue was. It is caused by the fact that JSON.stringify misses fields with undefined values. E.g. result of applying JSON.stringify to the following object {field: 'value', undefinedField: undefined} is {"field": "value"}. Hence
JSON.stringify({field: 'value', undefinedField: undefined}) === JSON.stringify({field: 'value'})`
But
{field: 'value', undefinedField: undefined}.should.deep.equal({field: 'value'})
fails
Alexander Elgin
- 6,796
- 4
- 40
- 50