diff --git a/lib/assert.js b/lib/assert.js index 26c4301ce..7c922d206 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -90,6 +90,13 @@ x.throws = function (fn, err, msg) { } try { + if (typeof err === 'string') { + 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)); 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);