// use with https://www.npmjs.org/package/deep-diff toEqualObj: function () { var KINDS = { 'N': 'newly added property/element', 'D': 'property/element was deleted', 'E': 'property/element was edited', 'A': 'change occurred within an array' }; function formatDiff(objdiff) { return objdiff.map(function (diff) { return '\t'+diff.kind +' at '+ diff.path.join('.') +'\n'+ '\t'+diff.actual +' should be '+ diff.expected; }).join('\n\n'); } return { compare: function (actual, expected) { var objdiff = (deepDiff(expected, actual) || []).map(function (diff) { return { kind: KINDS[diff.kind], path: diff.path, expected: diff.lhs, actual: diff.rhs }; }); return { pass : objdiff.length === 0, message : 'Expected object not to have differences\n\n' + formatDiff(objdiff) }; } }; }