Better primitives detection for saveArgsByValue
This commit is contained in:
committed by
Gregg Van Hove
parent
4d18e63b0f
commit
f58002f0a6
@@ -117,4 +117,14 @@ describe("CallTracker", function() {
|
|||||||
expect(callTracker.mostRecent().args[1]).not.toBe(arrayArg);
|
expect(callTracker.mostRecent().args[1]).not.toBe(arrayArg);
|
||||||
expect(callTracker.mostRecent().args[1]).toEqual(arrayArg);
|
expect(callTracker.mostRecent().args[1]).toEqual(arrayArg);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('saves primitive arguments by value', function() {
|
||||||
|
var callTracker = new jasmineUnderTest.CallTracker(),
|
||||||
|
args = [undefined, null, false, '', /\s/, 0, 1.2, NaN];
|
||||||
|
|
||||||
|
callTracker.saveArgumentsByValue();
|
||||||
|
callTracker.track({ object: {}, args: args });
|
||||||
|
|
||||||
|
expect(callTracker.mostRecent().args).toEqual(args);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ getJasmineRequireObj().CallTracker = function(j$) {
|
|||||||
var clonedArgs = [];
|
var clonedArgs = [];
|
||||||
var argsAsArray = j$.util.argsToArray(context.args);
|
var argsAsArray = j$.util.argsToArray(context.args);
|
||||||
for(var i = 0; i < argsAsArray.length; i++) {
|
for(var i = 0; i < argsAsArray.length; i++) {
|
||||||
if(Object.prototype.toString.apply(argsAsArray[i]).match(/^\[object/)) {
|
var str = Object.prototype.toString.apply(argsAsArray[i]),
|
||||||
clonedArgs.push(j$.util.clone(argsAsArray[i]));
|
primitives = /^\[object (Boolean|String|RegExp|Number)/;
|
||||||
} else {
|
|
||||||
|
if (argsAsArray[i] == null || str.match(primitives)) {
|
||||||
clonedArgs.push(argsAsArray[i]);
|
clonedArgs.push(argsAsArray[i]);
|
||||||
|
} else {
|
||||||
|
clonedArgs.push(j$.util.clone(argsAsArray[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
context.args = clonedArgs;
|
context.args = clonedArgs;
|
||||||
|
|||||||
Reference in New Issue
Block a user