如何在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'");
});
答案 0 :(得分:3)
我认为,您可能希望使用.trigger()
触发“点击”按钮,然后检查值,而不是直接调用您的回调函数,该函数不会限定为按钮的this
独立调用时。
$("#button").trigger("click");
答案 1 :(得分:1)
我在QUnit中不知道,但在Javascript中你通常会这样做:
func.apply((this), [arguments]);
例如
function foo(x) { return this + x; }
foo.apply(1, [2]) == 3
所以我会尝试
APP.callback.apply(whateverYouWantForThis);