jasmine-spec-extras/vendor/assets/javascripts/jasmine-sinon.js
2011-12-14 23:05:19 +00:00

45 lines
1.2 KiB
JavaScript

/**
jasmine-sinon.js 0.1.0
**/
(function(global) {
var spyMatchers = "called calledOnce calledTwice calledThrice calledBefore calledAfter calledOn alwaysCalledOn calledWith alwaysCalledWith calledWithExactly alwaysCalledWithExactly".split(" "),
i = spyMatchers.length,
spyMatcherHash = {},
unusualMatchers = {
"returned": "toHaveReturned",
"alwaysReturned": "toHaveAlwaysReturned"
},
getMatcherFunction = function(sinonName) {
return function() {
var sinonProperty = this.actual[sinonName];
return (typeof sinonProperty === 'function') ? sinonProperty.apply(this.actual, arguments) : sinonProperty;
};
};
while(i--) {
var sinonName = spyMatchers[i],
matcherName = "toHaveBeen" + sinonName.charAt(0).toUpperCase() + sinonName.slice(1);
spyMatcherHash[matcherName] = getMatcherFunction(sinonName);
};
for (var j in unusualMatchers) {
spyMatcherHash[unusualMatchers[j]] = getMatcherFunction(j);
}
global.sinonJasmine = {
getMatchers: function() {
return spyMatcherHash;
}
};
})(window);
beforeEach(function() {
this.addMatchers(sinonJasmine.getMatchers());
});