我正在尝试使用sinon.js监视window.document。我这样做是:
var document = {
getElementById = function() {}
}
sinon.spy(document, "getElementById").withArgs("foo").returnValues = ["bar"];
我对此电话的期望是: 当使用参数“foo”调用document.getElementById时,该函数必须返回“bar”。我的错误是什么?
如果我自己定义getElementById,我会得到预期的结果:
document.getElementById = function(param) {
if (param === "foo") return "bar";
}
答案 0 :(得分:4)
您只能在函数上记录调用并检查是否调用了tey,但从不更改函数的行为。来自withArgs
的文档:
创建一个仅在收到的参数时记录调用的间谍 matche传递给withArgs
你要找的是sinon.stub
:
sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar'])