diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 79e38067..372e542c 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -1066,7 +1066,14 @@ getJasmineRequireObj().Env = function(j$) { var message = 'Failed'; if (error) { message += ': '; - message += error.message || error; + if (error.message) { + message += error.message; + } else if (jasmine.isString_(error)) { + message += error; + } else { + // pretty print all kind of objects. This includes arrays. + message += jasmine.pp(error); + } } currentRunnable().addExpectationResult(false, { diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index 765b6a2b..fccc45f5 100644 --- a/spec/core/integration/EnvSpec.js +++ b/spec/core/integration/EnvSpec.js @@ -181,6 +181,12 @@ describe("Env integration", function() { } })] })); + expect(specDone).toHaveBeenCalledWith(jasmine.objectContaining({ + description: 'pretty prints objects', + failedExpectations: [jasmine.objectContaining({ + message: 'Failed: Object({ prop: \'value\', arr: [ \'works\', true ] })' + })] + })); done(); } }); @@ -197,6 +203,10 @@ describe("Env integration", function() { env.it('has a message and stack trace from an Error', function() { env.fail(new Error('error message')); }); + + env.it('pretty prints objects', function() { + env.fail({prop: 'value', arr: ['works', true]}); + }) }); env.execute(); diff --git a/src/core/Env.js b/src/core/Env.js index 91718aa6..728a551a 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -523,7 +523,14 @@ getJasmineRequireObj().Env = function(j$) { var message = 'Failed'; if (error) { message += ': '; - message += error.message || error; + if (error.message) { + message += error.message; + } else if (jasmine.isString_(error)) { + message += error; + } else { + // pretty print all kind of objects. This includes arrays. + message += jasmine.pp(error); + } } currentRunnable().addExpectationResult(false, {