Files
jasmine/src/core/SpyStrategy.js
Sheel Choksi e3f0389ac2 Change andThrow to always throw an Error
If an error is passed in, it is thrown, otherwise the argument passed
in is wrapped in an Error

[finishes #50607615][closes #372]
2013-09-05 23:05:45 -07:00

52 lines
1.0 KiB
JavaScript

getJasmineRequireObj().SpyStrategy = function() {
function SpyStrategy(options) {
options = options || {};
var identity = options.name || "unknown",
originalFn = options.fn || function() {},
getSpy = options.getSpy || function() {},
plan = function() {};
this.identity = function() {
return identity;
};
this.exec = function() {
return plan.apply(this, arguments);
};
this.callThrough = function() {
plan = originalFn;
return getSpy();
};
this.callReturn = function(value) {
plan = function() {
return value;
};
return getSpy();
};
this.callThrow = function(something) {
var error = (something instanceof Error) ? something : new Error(something);
plan = function() {
throw error;
};
return getSpy();
};
this.callFake = function(fn) {
plan = fn;
return getSpy();
};
this.stub = function(fn) {
plan = function() {};
return getSpy();
};
}
return SpyStrategy;
};