add in regex matching for toThrow matcher

This commit is contained in:
Sheel Choksi
2013-04-07 01:27:20 -07:00
parent 2445fb36dc
commit c017257164
3 changed files with 22 additions and 6 deletions

View File

@@ -222,7 +222,7 @@ jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) {
jasmine.Matchers.prototype.toThrow = function(expected) {
var result = false;
var exception;
var exception, exceptionMessage;
if (typeof this.actual != 'function') {
throw new Error('Actual is not a function');
}
@@ -233,14 +233,16 @@ jasmine.Matchers.prototype.toThrow = function(expected) {
}
if (exception) {
result = (jasmine.util.isUndefined(expected) || this.env.equals_(exception.message || exception, expected.message || expected));
exceptionMessage = exception.message || exception;
result = (jasmine.util.isUndefined(expected) || this.env.equals_(exceptionMessage, expected.message || expected) || (jasmine.isA_("RegExp", expected) && expected.test(exceptionMessage)));
}
var not = this.isNot ? "not " : "";
var regexMatch = jasmine.isA_("RegExp", expected) ? " an exception matching" : "";
this.message = function() {
if (exception) {
return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' ');
return ["Expected function " + not + "to throw" + regexMatch, expected ? expected.message || expected : "an exception", ", but it threw", exceptionMessage].join(' ');
} else {
return "Expected function to throw an exception.";
}