Helps reduce how nested custom matchers have to be for users as well as Jasmine internal matchers [#59161378]
45 lines
1.0 KiB
JavaScript
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;
|
|
};
|