From 8807bbb85042a845c81149bf6c2865b477989399 Mon Sep 17 00:00:00 2001 From: mmmichl Date: Sun, 26 Feb 2017 19:25:02 +0100 Subject: [PATCH] Pretty print objects passed to fail method Fixes #1090 --- spec/core/integration/EnvSpec.js | 10 ++++++++++ src/core/Env.js | 12 ++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index bbce668c..92a0c78c 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 b7337774..d2a044a5 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -516,9 +516,17 @@ getJasmineRequireObj().Env = function(j$) { this.fail = function(error) { var message = 'Failed'; + var isError = error instanceof Error; if (error) { message += ': '; - message += error.message || error; + if (isError) { + message += error.message; + } else if (typeof error === 'object') { + // pretty print all kind of objects. This includes arrays. + message += jasmine.pp(error); + } else { + message += error; + } } currentRunnable().addExpectationResult(false, { @@ -527,7 +535,7 @@ getJasmineRequireObj().Env = function(j$) { expected: '', actual: '', message: message, - error: error && error.message ? error : null + error: isError ? error : null }); }; }