Files
jasmine/src/core/matchers/toThrow.js
Sheel Choksi 39d7ebf28e Remove an extra layer of wrapping for matchers/custom matchers
Helps reduce how nested custom matchers have to be for users as well as
Jasmine internal matchers

[#59161378]
2013-10-20 22:21:56 -07:00

45 lines
1.0 KiB
JavaScript

getJasmineRequireObj().toThrow = function(j$) {
function toThrow(util) {
return function(actual, expected) {
var result = { pass: false },
threw = false,
thrown;
if (typeof actual != "function") {
throw new Error("Actual is not a Function");
}
try {
actual();
} catch (e) {
threw = true;
thrown = e;
}
if (!threw) {
result.message = "Expected function to throw an exception.";
return result;
}
if (arguments.length == 1) {
result.pass = true;
result.message = "Expected function not to throw, but it threw " + j$.pp(thrown) + ".";
return result;
}
if (util.equals(thrown, expected)) {
result.pass = true;
result.message = "Expected function not to throw " + j$.pp(expected) + ".";
} else {
result.message = "Expected function to throw " + j$.pp(expected) + ", but it threw " + j$.pp(thrown) + ".";
}
return result;
};
}
return toThrow;
};