3

sinon.js で window.document をスパイしようとしています。私がすることはこれです:

var document = {
    getElementById = function() {}
}

sinon.spy(document, "getElementById").withArgs("foo").returnValues = ["bar"];

この呼び出しに期待することは次のとおりです。document.getElementById が引数「foo」で呼び出された場合、関数は「bar」を返す必要があります。私のエラーは何ですか?

このように getElementById を自分で定義すると、期待される結果が得られます。

document.getElementById = function(param) {
    if (param === "foo") return "bar";
}
4

1 に答える 1

4

関数の呼び出しを記録して、呼び出されたことを確認することはできますが、関数の動作を変更することはできません。のドキュメントからwithArgs

受け取った引数が withArgs に渡されたものと一致する場合にのみ呼び出しを記録するスパイを作成します

あなたが探しているものは次のsinon.stubとおりです。

sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar'])
于 2013-06-25T07:16:02.063 に答える