JSFiddle - React, Tailwind, and code Playground
by BrianGenisio
JavaScript
function Mocker() {
this.originalFunctions = {};
function getFunction(obj, functionName) {
var tokens = functionName.split(".");
if (tokens.length === 0 || tokens[0] === "") {
return obj;
} else if (tokens.length == 1) {
return obj[tokens[0]];
} else {
return getFunction(obj[tokens.shift()], tokens.join("."));
}
}
function setFunction(obj, functionName, value) {
var tokens = functionName.split(".");
if (tokens.length === 0 || tokens[0] === "") {
return;
} else if (tokens.length == 1) {
obj[tokens[0]] = value;
} else {
setFunction(obj[tokens.shift()], tokens.join("."), value);
}
}
this.backup = function() {
for (var i = 0; i < arguments.length; i++) {
var functionName = arguments[i];
this.originalFunctions[functionName] = getFunction(window, functionName);
}
};
this.restore = function() {
for (var i = 0; i < arguments.length; i++) {
var functionName = arguments[i];
setFunction(window, functionName, this.originalFunctions[functionName]);
}
};
}
mocker = new Mocker();
console.log(Math.random());
mocker.setup("Math.random");
Math.random = function() {
return 5;
};
console.log(Math.random());
mocker.teardown("Math.random");
console.log(Math.random());