Moved createSpyObj to env so it can be stateful
This commit is contained in:
@@ -324,47 +324,6 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|||||||
return putativeSpy.and instanceof j$.SpyStrategy &&
|
return putativeSpy.and instanceof j$.SpyStrategy &&
|
||||||
putativeSpy.calls instanceof j$.CallTracker;
|
putativeSpy.calls instanceof j$.CallTracker;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an object with multiple {@link Spy}s as its members.
|
|
||||||
* @name jasmine.createSpyObj
|
|
||||||
* @function
|
|
||||||
* @param {String} [baseName] - Base name for the spies in the object.
|
|
||||||
* @param {String[]|Object} methodNames - Array of method names to create spies for, or Object whose keys will be method names and values the {@link Spy#and#returnValue|returnValue}.
|
|
||||||
* @return {Object}
|
|
||||||
*/
|
|
||||||
j$.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]] = j$.createSpy(baseName + '.' + methodNames[i]);
|
|
||||||
spiesWereSet = true;
|
|
||||||
}
|
|
||||||
} else if (j$.isObject_(methodNames)) {
|
|
||||||
for (var key in methodNames) {
|
|
||||||
if (methodNames.hasOwnProperty(key)) {
|
|
||||||
obj[key] = j$.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;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
getJasmineRequireObj().util = function(j$) {
|
getJasmineRequireObj().util = function(j$) {
|
||||||
@@ -1153,6 +1112,39 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
return spyRegistry.spyOnProperty.apply(spyRegistry, arguments);
|
return spyRegistry.spyOnProperty.apply(spyRegistry, arguments);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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]] = j$.createSpy(baseName + '.' + methodNames[i]);
|
||||||
|
spiesWereSet = true;
|
||||||
|
}
|
||||||
|
} else if (j$.isObject_(methodNames)) {
|
||||||
|
for (var key in methodNames) {
|
||||||
|
if (methodNames.hasOwnProperty(key)) {
|
||||||
|
obj[key] = j$.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;
|
||||||
|
};
|
||||||
|
|
||||||
var ensureIsFunction = function(fn, caller) {
|
var ensureIsFunction = function(fn, caller) {
|
||||||
if (!j$.isFunction_(fn)) {
|
if (!j$.isFunction_(fn)) {
|
||||||
throw new Error(caller + ' expects a function argument; received ' + j$.getType_(fn));
|
throw new Error(caller + ' expects a function argument; received ' + j$.getType_(fn));
|
||||||
@@ -4914,6 +4906,18 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
|||||||
return env.clock;
|
return env.clock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an object with multiple {@link Spy}s as its members.
|
||||||
|
* @name jasmine.createSpyObj
|
||||||
|
* @function
|
||||||
|
* @param {String} [baseName] - Base name for the spies in the object.
|
||||||
|
* @param {String[]|Object} methodNames - Array of method names to create spies for, or Object whose keys will be method names and values the {@link Spy#and#returnValue|returnValue}.
|
||||||
|
* @return {Object}
|
||||||
|
*/
|
||||||
|
jasmine.createSpyObj = function(baseName, methodNames) {
|
||||||
|
return env.createSpyObj(baseName, methodNames);
|
||||||
|
};
|
||||||
|
|
||||||
return jasmineInterface;
|
return jasmineInterface;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
describe('Spies', function () {
|
describe('Spies', function () {
|
||||||
|
var env;
|
||||||
|
|
||||||
|
beforeEach(function() {
|
||||||
|
env = new jasmineUnderTest.Env();
|
||||||
|
});
|
||||||
|
|
||||||
describe("createSpy", function() {
|
describe("createSpy", function() {
|
||||||
var TestClass;
|
var TestClass;
|
||||||
|
|
||||||
@@ -80,7 +86,7 @@ describe('Spies', function () {
|
|||||||
|
|
||||||
describe("createSpyObj", function() {
|
describe("createSpyObj", function() {
|
||||||
it("should create an object with spy methods and corresponding return values when you call jasmine.createSpyObj() with an object", function () {
|
it("should create an object with spy methods and corresponding return values when you call jasmine.createSpyObj() with an object", function () {
|
||||||
var spyObj = jasmineUnderTest.createSpyObj('BaseName', {'method1': 42, 'method2': 'special sauce' });
|
var spyObj = env.createSpyObj('BaseName', {'method1': 42, 'method2': 'special sauce' });
|
||||||
|
|
||||||
expect(spyObj.method1()).toEqual(42);
|
expect(spyObj.method1()).toEqual(42);
|
||||||
expect(spyObj.method1.and.identity).toEqual('BaseName.method1');
|
expect(spyObj.method1.and.identity).toEqual('BaseName.method1');
|
||||||
@@ -91,7 +97,7 @@ describe('Spies', function () {
|
|||||||
|
|
||||||
|
|
||||||
it("should create an object with a bunch of spy methods when you call jasmine.createSpyObj()", function() {
|
it("should create an object with a bunch of spy methods when you call jasmine.createSpyObj()", function() {
|
||||||
var spyObj = jasmineUnderTest.createSpyObj('BaseName', ['method1', 'method2']);
|
var spyObj = env.createSpyObj('BaseName', ['method1', 'method2']);
|
||||||
|
|
||||||
expect(spyObj).toEqual({ method1: jasmine.any(Function), method2: jasmine.any(Function)});
|
expect(spyObj).toEqual({ method1: jasmine.any(Function), method2: jasmine.any(Function)});
|
||||||
expect(spyObj.method1.and.identity).toEqual('BaseName.method1');
|
expect(spyObj.method1.and.identity).toEqual('BaseName.method1');
|
||||||
@@ -99,7 +105,7 @@ describe('Spies', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should allow you to omit the baseName", function() {
|
it("should allow you to omit the baseName", function() {
|
||||||
var spyObj = jasmineUnderTest.createSpyObj(['method1', 'method2']);
|
var spyObj = env.createSpyObj(['method1', 'method2']);
|
||||||
|
|
||||||
expect(spyObj).toEqual({ method1: jasmine.any(Function), method2: jasmine.any(Function)});
|
expect(spyObj).toEqual({ method1: jasmine.any(Function), method2: jasmine.any(Function)});
|
||||||
expect(spyObj.method1.and.identity).toEqual('unknown.method1');
|
expect(spyObj.method1.and.identity).toEqual('unknown.method1');
|
||||||
@@ -108,19 +114,19 @@ describe('Spies', function () {
|
|||||||
|
|
||||||
it("should throw if you do not pass an array or object argument", function() {
|
it("should throw if you do not pass an array or object argument", function() {
|
||||||
expect(function() {
|
expect(function() {
|
||||||
jasmineUnderTest.createSpyObj('BaseName');
|
env.createSpyObj('BaseName');
|
||||||
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should throw if you pass an empty array argument", function() {
|
it("should throw if you pass an empty array argument", function() {
|
||||||
expect(function() {
|
expect(function() {
|
||||||
jasmineUnderTest.createSpyObj('BaseName', []);
|
env.createSpyObj('BaseName', []);
|
||||||
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should throw if you pass an empty object argument", function() {
|
it("should throw if you pass an empty object argument", function() {
|
||||||
expect(function() {
|
expect(function() {
|
||||||
jasmineUnderTest.createSpyObj('BaseName', {});
|
env.createSpyObj('BaseName', {});
|
||||||
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
}).toThrow("createSpyObj requires a non-empty array or object of method names to create spies for");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -412,6 +412,39 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
return spyRegistry.spyOnProperty.apply(spyRegistry, arguments);
|
return spyRegistry.spyOnProperty.apply(spyRegistry, arguments);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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]] = j$.createSpy(baseName + '.' + methodNames[i]);
|
||||||
|
spiesWereSet = true;
|
||||||
|
}
|
||||||
|
} else if (j$.isObject_(methodNames)) {
|
||||||
|
for (var key in methodNames) {
|
||||||
|
if (methodNames.hasOwnProperty(key)) {
|
||||||
|
obj[key] = j$.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;
|
||||||
|
};
|
||||||
|
|
||||||
var ensureIsFunction = function(fn, caller) {
|
var ensureIsFunction = function(fn, caller) {
|
||||||
if (!j$.isFunction_(fn)) {
|
if (!j$.isFunction_(fn)) {
|
||||||
throw new Error(caller + ' expects a function argument; received ' + j$.getType_(fn));
|
throw new Error(caller + ' expects a function argument; received ' + j$.getType_(fn));
|
||||||
|
|||||||
@@ -192,45 +192,4 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|||||||
return putativeSpy.and instanceof j$.SpyStrategy &&
|
return putativeSpy.and instanceof j$.SpyStrategy &&
|
||||||
putativeSpy.calls instanceof j$.CallTracker;
|
putativeSpy.calls instanceof j$.CallTracker;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an object with multiple {@link Spy}s as its members.
|
|
||||||
* @name jasmine.createSpyObj
|
|
||||||
* @function
|
|
||||||
* @param {String} [baseName] - Base name for the spies in the object.
|
|
||||||
* @param {String[]|Object} methodNames - Array of method names to create spies for, or Object whose keys will be method names and values the {@link Spy#and#returnValue|returnValue}.
|
|
||||||
* @return {Object}
|
|
||||||
*/
|
|
||||||
j$.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]] = j$.createSpy(baseName + '.' + methodNames[i]);
|
|
||||||
spiesWereSet = true;
|
|
||||||
}
|
|
||||||
} else if (j$.isObject_(methodNames)) {
|
|
||||||
for (var key in methodNames) {
|
|
||||||
if (methodNames.hasOwnProperty(key)) {
|
|
||||||
obj[key] = j$.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;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -256,5 +256,17 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
|||||||
return env.clock;
|
return env.clock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an object with multiple {@link Spy}s as its members.
|
||||||
|
* @name jasmine.createSpyObj
|
||||||
|
* @function
|
||||||
|
* @param {String} [baseName] - Base name for the spies in the object.
|
||||||
|
* @param {String[]|Object} methodNames - Array of method names to create spies for, or Object whose keys will be method names and values the {@link Spy#and#returnValue|returnValue}.
|
||||||
|
* @return {Object}
|
||||||
|
*/
|
||||||
|
jasmine.createSpyObj = function(baseName, methodNames) {
|
||||||
|
return env.createSpyObj(baseName, methodNames);
|
||||||
|
};
|
||||||
|
|
||||||
return jasmineInterface;
|
return jasmineInterface;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user