Added jasmine.spyOnGlobalErrorsAsync
* Allows testing code that's expected to prodeuce global errors or unhandled promise rejections * Fixes #1843 * Fixes #1453
This commit is contained in:
@@ -1,9 +1,17 @@
|
||||
getJasmineRequireObj().GlobalErrors = function(j$) {
|
||||
function GlobalErrors(global) {
|
||||
const handlers = [];
|
||||
global = global || j$.getGlobal();
|
||||
|
||||
const onerror = function onerror() {
|
||||
const handlers = [];
|
||||
let overrideHandler = null,
|
||||
onRemoveOverrideHandler = null;
|
||||
|
||||
function onerror(message, source, lineno, colno, error) {
|
||||
if (overrideHandler) {
|
||||
overrideHandler(error || message);
|
||||
return;
|
||||
}
|
||||
|
||||
const handler = handlers[handlers.length - 1];
|
||||
|
||||
if (handler) {
|
||||
@@ -11,7 +19,7 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
|
||||
} else {
|
||||
throw arguments[0];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
this.originalHandlers = {};
|
||||
this.jasmineHandlers = {};
|
||||
@@ -42,6 +50,11 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
|
||||
|
||||
const handler = handlers[handlers.length - 1];
|
||||
|
||||
if (overrideHandler) {
|
||||
overrideHandler(error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (handler) {
|
||||
handler(error);
|
||||
} else {
|
||||
@@ -126,6 +139,24 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
|
||||
|
||||
handlers.pop();
|
||||
};
|
||||
|
||||
this.setOverrideListener = function(listener, onRemove) {
|
||||
if (overrideHandler) {
|
||||
throw new Error("Can't set more than one override listener at a time");
|
||||
}
|
||||
|
||||
overrideHandler = listener;
|
||||
onRemoveOverrideHandler = onRemove;
|
||||
};
|
||||
|
||||
this.removeOverrideListener = function() {
|
||||
if (onRemoveOverrideHandler) {
|
||||
onRemoveOverrideHandler();
|
||||
}
|
||||
|
||||
overrideHandler = null;
|
||||
onRemoveOverrideHandler = null;
|
||||
};
|
||||
}
|
||||
|
||||
return GlobalErrors;
|
||||
|
||||
Reference in New Issue
Block a user