From c42b1972e2d9ed7b24c43136a8819cd38b6e8f9a Mon Sep 17 00:00:00 2001 From: Jared Deckard Date: Fri, 24 Mar 2017 13:54:08 -0500 Subject: [PATCH 1/3] Allow the matcher provide a custom error message --- src/core/Expectation.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/Expectation.js b/src/core/Expectation.js index 28a73016..8ebba620 100644 --- a/src/core/Expectation.js +++ b/src/core/Expectation.js @@ -65,6 +65,7 @@ getJasmineRequireObj().Expectation = function() { matcherName: name, passed: result.pass, message: message, + error: result.error, actual: this.actual, expected: expected // TODO: this may need to be arrayified/sliced } From 25d9a396aa3fcd98c2669d86b152d1749953103d Mon Sep 17 00:00:00 2001 From: Jared Deckard Date: Fri, 24 Mar 2017 14:07:23 -0500 Subject: [PATCH 2/3] Test that custom matchers can supply custom errors --- spec/core/ExpectationSpec.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/spec/core/ExpectationSpec.js b/spec/core/ExpectationSpec.js index 18cb3921..f41251b9 100644 --- a/spec/core/ExpectationSpec.js +++ b/spec/core/ExpectationSpec.js @@ -384,6 +384,42 @@ describe("Expectation", function() { message: "I'm a custom message" }); }); + + it("reports a custom error message to the spec", function() { + var customError = new Error("I am a custom error"); + var matchers = { + toFoo: function() { + return { + compare: function() { + return { + pass: false, + message: "I am a custom message", + error: customError + }; + } + }; + } + }, + addExpectationResult = jasmine.createSpy("addExpectationResult"), + expectation; + + expectation = new jasmineUnderTest.Expectation({ + actual: "an actual", + customMatchers: matchers, + addExpectationResult: addExpectationResult + }); + + expectation.toFoo("hello"); + + expect(addExpectationResult).toHaveBeenCalledWith(false, { + matcherName: "toFoo", + passed: false, + expected: "hello", + actual: "an actual", + message: "I am a custom message", + error: customError + }); + }); }); From 90c87140acccbab4961d245282a14be19bb7586a Mon Sep 17 00:00:00 2001 From: Jared Deckard Date: Fri, 24 Mar 2017 14:50:54 -0500 Subject: [PATCH 3/3] Expect an undefined error to be passed to the expectation result --- spec/core/ExpectationSpec.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/spec/core/ExpectationSpec.js b/spec/core/ExpectationSpec.js index f41251b9..be4a9986 100644 --- a/spec/core/ExpectationSpec.js +++ b/spec/core/ExpectationSpec.js @@ -113,6 +113,7 @@ describe("Expectation", function() { matcherName: "toFoo", passed: true, message: "", + error: undefined, expected: "hello", actual: "an actual" }); @@ -146,7 +147,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: "an actual", - message: "" + message: "", + error: undefined }); }); @@ -179,7 +181,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: "an actual", - message: "I am a custom message" + message: "I am a custom message", + error: undefined }); }); @@ -212,7 +215,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: "an actual", - message: "I am a custom message" + message: "I am a custom message", + error: undefined }); }); @@ -244,6 +248,7 @@ describe("Expectation", function() { matcherName: "toFoo", passed: true, message: "", + error: undefined, expected: "hello", actual: actual }); @@ -279,7 +284,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: actual, - message: "default message" + message: "default message", + error: undefined }); }); @@ -314,7 +320,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: actual, - message: "I am a custom message" + message: "I am a custom message", + error: undefined }); }); @@ -345,7 +352,8 @@ describe("Expectation", function() { passed: true, expected: "hello", actual: actual, - message: "" + message: "", + error: undefined }); }); @@ -381,7 +389,8 @@ describe("Expectation", function() { passed: false, expected: "hello", actual: actual, - message: "I'm a custom message" + message: "I'm a custom message", + error: undefined }); });