如何使用sinon.js监视预定义的对象

时间:2013-06-24 11:56:34

标签: javascript testing sinon spy

我正在尝试使用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";
}

1 个答案:

答案 0 :(得分:4)

您只能在函数上记录调用并检查是否调用了tey,但从不更改函数的行为。来自withArgs的文档:

  

创建一个仅在收到的参数时记录调用的间谍   matche传递给withArgs

你要找的是sinon.stub

sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar'])