From 911d777d1ed5e60b7c5b5ee4c1f3733ce6b6bb32 Mon Sep 17 00:00:00 2001 From: Sam Verschueren Date: Wed, 4 Nov 2015 12:23:32 +0100 Subject: [PATCH 1/2] Add string support to throws --- lib/assert.js | 8 +++++++- readme.md | 2 +- test/test.js | 12 ++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index 26c4301ce..5b790e04c 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -90,7 +90,13 @@ x.throws = function (fn, err, msg) { } try { - assert.throws(fn, err, msg); + if (typeof err === 'string') { + assert.throws(fn, function (e) { + return e.message === err; + }, msg); + } else { + assert.throws(fn, err, msg); + } } catch (err) { test(false, create(err.actual, err.expected, err.operator, err.message, x.throws)); } diff --git a/readme.md b/readme.md index 8cdf3e85e..6e84655a8 100644 --- a/readme.md +++ b/readme.md @@ -423,7 +423,7 @@ Assert that `value` is not deep equal to `expected`. Assert that `function` throws an error or `promise` rejects. -`error` can be a constructor, regex or validation function. +`error` can be a constructor, regex, error message or validation function. ### .doesNotThrow(function|promise, [message]) diff --git a/test/test.js b/test/test.js index 06a2c9638..c4f304ad0 100644 --- a/test/test.js +++ b/test/test.js @@ -223,6 +223,18 @@ test('handle throws with regex', function (t) { }); }); +test('handle throws with string', function (t) { + ava(function (a) { + a.plan(1); + + var promise = Promise.reject(new Error('abc')); + a.throws(promise, 'abc'); + }).run().then(function (a) { + t.false(a.assertionError); + t.end(); + }); +}); + test('handle throws with false-positive promise', function (t) { ava(function (a) { a.plan(1); From ef2acd1084e117f92644c69bad8a5981a2ee2b09 Mon Sep 17 00:00:00 2001 From: Sam Verschueren Date: Thu, 5 Nov 2015 08:06:25 +0100 Subject: [PATCH 2/2] Clean up --- lib/assert.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index 5b790e04c..7c922d206 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -91,12 +91,13 @@ x.throws = function (fn, err, msg) { try { if (typeof err === 'string') { - assert.throws(fn, function (e) { - return e.message === err; - }, msg); - } else { - assert.throws(fn, err, msg); + var e = err; + err = function (err) { + return err.message === e; + }; } + + assert.throws(fn, err, msg); } catch (err) { test(false, create(err.actual, err.expected, err.operator, err.message, x.throws)); }