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; +}; |
