Установка диапазона для $ (this) в тестах QUnit - PullRequest
0 голосов
/ 15 июня 2011

Как настроить правильную область видимости в тестовой среде 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'");
});

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Я думаю, вы можете использовать .trigger(), чтобы вызвать «щелчок» по кнопке и затем проверить значения, вместо непосредственного вызова функции обратного вызова, которая не будет ограничена для кнопки this при вызове независимо.

$("#button").trigger("click");
1 голос
/ 15 июня 2011

Я не знаю, как в QUnit, но в Javascript в целом вы делаете это так:

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

например

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

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

так что я бы попробовал

APP.callback.apply(whateverYouWantForThis);
...