aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2013-05-24 15:55:11 -0700
committerVojta Jina2013-05-24 16:57:15 -0700
commit88eaea8e7bf025a7805a5d20f5d47472e4f26f6f (patch)
tree21a197f24216a64ac83075417ab1ac98e9ddbb66
parent4179f62cc270b9614075095e1e4931736cff30a7 (diff)
downloadangular.js-88eaea8e7bf025a7805a5d20f5d47472e4f26f6f.tar.bz2
test(matchers): update toThrow matcher
-rw-r--r--test/matchers.js35
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;
+};