46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
getJasmineRequireObj().SpyFactory = function(j$) {
|
|
function SpyFactory(getCustomStrategies, getPromise) {
|
|
var self = this;
|
|
|
|
this.createSpy = function(name, originalFn) {
|
|
return j$.Spy(name, originalFn, getCustomStrategies(), getPromise);
|
|
};
|
|
|
|
this.createSpyObj = function(baseName, methodNames) {
|
|
var baseNameIsCollection =
|
|
j$.isObject_(baseName) || j$.isArray_(baseName);
|
|
|
|
if (baseNameIsCollection && j$.util.isUndefined(methodNames)) {
|
|
methodNames = baseName;
|
|
baseName = 'unknown';
|
|
}
|
|
|
|
var obj = {};
|
|
var spiesWereSet = false;
|
|
|
|
if (j$.isArray_(methodNames)) {
|
|
for (var i = 0; i < methodNames.length; i++) {
|
|
obj[methodNames[i]] = self.createSpy(baseName + '.' + methodNames[i]);
|
|
spiesWereSet = true;
|
|
}
|
|
} else if (j$.isObject_(methodNames)) {
|
|
for (var key in methodNames) {
|
|
if (methodNames.hasOwnProperty(key)) {
|
|
obj[key] = self.createSpy(baseName + '.' + key);
|
|
obj[key].and.returnValue(methodNames[key]);
|
|
spiesWereSet = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!spiesWereSet) {
|
|
throw 'createSpyObj requires a non-empty array or object of method names to create spies for';
|
|
}
|
|
|
|
return obj;
|
|
};
|
|
}
|
|
|
|
return SpyFactory;
|
|
};
|