Javascript 如何使用sinon.js监视预定义对象
我正试图用sinon.js监视window.document。我所做的是:Javascript 如何使用sinon.js监视预定义对象,javascript,testing,sinon,spy,Javascript,Testing,Sinon,Spy,我正试图用sinon.js监视window.document。我所做的是: var document = { getElementById = function() {} } sinon.spy(document, "getElementById").withArgs("foo").returnValues = ["bar"]; 我对这次电话的期望是: 当使用参数“foo”调用document.getElementById时,函数必须返回“bar”。我的错误是什么 如果我自己这样定义
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";
}
您只能记录对函数的调用并检查是否调用了tey,但决不能更改函数的行为。从带有参数的
文档中:
创建仅在收到参数时记录调用的间谍
将传递给的内容与参数匹配
您要找的是一个sinon.stub
:
sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar'])
@Aykut Yaman:您在这里所做的document.getElementById=function(param){if(param==“foo”)返回“bar”}
将永久替换原始的getElementById
函数。与存根执行的操作相同。唯一的区别是在存根的情况下,您可以选择还原原始函数。