0

コールバック関数をテストするために QUnit テスト環境で正しいスコープを設定するにはどうすればよいですか?

テストするコード:

<script type="text/javascript">
    APP = {};
    APP.callBack = function() {
        $(this).closest("input").val('foobar');
    };

    $(function() {
        $("#button").click(APP.callBack);
    });
</script>
<div>
  <a id="button" href="#"></a>
  <input id="id-for-testing-only" name="test" type="text" value="barfoo" />
</div>

テストコード:

test("try callback with 'this' scope", function() {
    APP.callBack();
    equals($("#id-for-testing-only").val(), "foobar", "should set value to 'foobar'");
});
4

2 に答える 2

3

.trigger()コールバック関数を直接呼び出すのではなく、ボタンの「クリック」をトリガーして値を確認するために使用することをお勧めします。コールバック関数は、this個別に呼び出されたときにボタンの範囲に限定されません。

$("#button").trigger("click");
于 2011-06-15T13:55:57.573 に答える
1

QUnitについてはわかりませんが、一般的にJavascriptでは次のようにします:

func.apply((this), [arguments]);

例えば

function foo(x) { return this + x; }

foo.apply(1, [2]) == 3

だから私は試してみます

APP.callback.apply(whateverYouWantForThis);
于 2011-06-15T13:59:14.360 に答える