3

sinon.js関数のスパイを作成するために使用しようとしていjQuery.appendます。

試してみvar spy = sinon.spy($, "append");ました: 次のエラーが発生しました: TypeError: Attempted to wrap undefined property append as function

私は次のように修正しました:var spy = sinon.spy($.fn, "append");どちらが良いようですが、spy.called誤りです。

4

4 に答える 4

3

この質問は古いと思いますが、同様の問題があり、解決策を見つけました。

上記で提案されたアンサーの1つを試しました。

var spy = sinon.spy($("body"), "append");

私のバージョン:

var spy = sinon.spy($("#id"), "function");

しかし、これはうまくいかず、その理由を理解するのに時間がかかりました。jQuery オブジェクトの後に配列にアクセスする必要があることがわかりました。

このような:

var spy = sinon.spy($("#id")[0], "function");

Sinon は、jQuery オブジェクト自体には何もしません。なぜなら、それには複数の値が含まれる可能性があり、必要な値が (1 つしかない場合でも) わからないからです。

PS: これがすべてのjquery 関数で機能するわけではないことに気付きました。私にとっては、「フォーカス」で機能しました。PPS: これは、この質問には関係ないかもしれません。しかし、私がやろうとしているのは、karma-runner 内でフォーカス イベントをトリガーすることです。これまでのところ、私はうまくいきませんでした (ただし、クリック イベントは機能します)。これについては、StackOverflow に質問を投稿します。

于 2016-04-08T12:23:10.200 に答える