diff options
| author | Vojta Jina | 2013-05-24 15:55:11 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2013-05-24 16:57:15 -0700 | 
| commit | 88eaea8e7bf025a7805a5d20f5d47472e4f26f6f (patch) | |
| tree | 21a197f24216a64ac83075417ab1ac98e9ddbb66 | |
| parent | 4179f62cc270b9614075095e1e4931736cff30a7 (diff) | |
| download | angular.js-88eaea8e7bf025a7805a5d20f5d47472e4f26f6f.tar.bz2 | |
test(matchers): update toThrow matcher
| -rw-r--r-- | test/matchers.js | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/test/matchers.js b/test/matchers.js index 3630c3b1..8e4be118 100644 --- a/test/matchers.js +++ b/test/matchers.js @@ -151,3 +151,38 @@ beforeEach(function() {    });  }); + + +// TODO(vojta): remove this once Jasmine in Karma gets updated +// https://github.com/pivotal/jasmine/blob/c40b64a24c607596fa7488f2a0ddb98d063c872a/src/core/Matchers.js#L217-L246 +// This toThrow supports RegExps. +jasmine.Matchers.prototype.toThrow = function(expected) { +  var result = false; +  var exception, exceptionMessage; +  if (typeof this.actual != 'function') { +    throw new Error('Actual is not a function'); +  } +  try { +    this.actual(); +  } catch (e) { +    exception = e; +  } + +  if (exception) { +    exceptionMessage = exception.message || exception; +    result = (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" + regexMatch, expected ? expected.message || expected : "an exception", ", but it threw", exceptionMessage].join(' '); +    } else { +      return "Expected function to throw an exception."; +    } +  }; + +  return result; +}; | 
