Reputation: 80
I'm trying to spy window.document with sinon.js. What I do is this:
var document = {
getElementById = function() {}
}
sinon.spy(document, "getElementById").withArgs("foo").returnValues = ["bar"];
What I expect from this call is this: When document.getElementById is called with the argument "foo" the function must return "bar". What's my error?
If I define getElementById by myself like this I get the expected result:
document.getElementById = function(param) {
if (param === "foo") return "bar";
}
Upvotes: 3
Views: 2609
Reputation: 110892
You can only record calls on function and check that tey was called, but never change the behavior of the function. From the doc for withArgs
:
Creates a spy that only records calls when the received arguments matche those passed to withArgs
Whar you are looking for is a sinon.stub
:
sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar'])
Upvotes: 4