diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index aa7ebdc5..2df1c885 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -5253,7 +5253,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) { diffBuilder.recordMismatch( objectKeysAreDifferentFormatter.bind(null, this.pp) ); - return false; + result = false; } for (const key of aKeys) { diff --git a/spec/core/matchers/toEqualSpec.js b/spec/core/matchers/toEqualSpec.js index 39329609..eeec06dc 100644 --- a/spec/core/matchers/toEqualSpec.js +++ b/spec/core/matchers/toEqualSpec.js @@ -96,6 +96,16 @@ describe('toEqual', function() { expect(compareEquals(actual, expected).message).toEqual(message); }); + it('reports mismatches as well as missing or extra properties', function() { + const actual = { x: { z: 2 } }, + expected = { x: { y: 1, z: 3 } }, + message = 'Expected $.x to have properties\n' + + ' y: 1\n' + + 'Expected $.x.z = 2 to equal 3.'; + + expect(compareEquals(actual, expected).message).toEqual(message); + }); + it('reports missing symbol properties', function() { const actual = { x: {} }, expected = { x: { [Symbol('y')]: 1 } }, diff --git a/src/core/matchers/matchersUtil.js b/src/core/matchers/matchersUtil.js index 2e4ae2b5..cf265b26 100644 --- a/src/core/matchers/matchersUtil.js +++ b/src/core/matchers/matchersUtil.js @@ -483,7 +483,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) { diffBuilder.recordMismatch( objectKeysAreDifferentFormatter.bind(null, this.pp) ); - return false; + result = false; } for (const key of aKeys) {