Deep clone args before passing them to reporters

This commit is contained in:
Audrius Jakumavicius
2017-10-07 01:32:39 +02:00
parent f6342ad4fe
commit 1f6c91de7c
4 changed files with 22 additions and 22 deletions

View File

@@ -7,25 +7,9 @@ getJasmineRequireObj().CallTracker = function(j$) {
var calls = [];
var opts = {};
function argCloner(context) {
var clonedArgs = [];
var argsAsArray = j$.util.argsToArray(context.args);
for(var i = 0; i < argsAsArray.length; i++) {
var str = Object.prototype.toString.apply(argsAsArray[i]),
primitives = /^\[object (Boolean|String|RegExp|Number)/;
if (argsAsArray[i] == null || str.match(primitives)) {
clonedArgs.push(argsAsArray[i]);
} else {
clonedArgs.push(j$.util.clone(argsAsArray[i]));
}
}
context.args = clonedArgs;
}
this.track = function(context) {
if(opts.cloneArgs) {
argCloner(context);
context.args = j$.util.cloneArgs(context.args);
}
calls.push(context);
};