如何使用jsTestDriver在焦点事件中测试焦点

时间:2011-06-22 05:57:08

标签: jquery focus js-test-driver

目前我正在使用jQuery 1.6.1和jsTestDriver框架来测试以下代码片段。主要目的是测试“#arew”输入元素是否在焦点事件触发“#switcher”后获得焦点。它没有通过测试,但我认为它没有理由失败。

一个奇怪的事情是,如果我在此测试函数中使用firefox中的firebug设置断点,则稍后按下运行按钮后测试将成功通过。

有没有人遇到同样的问题?或者它是jsTestDriver框架的错误?

我的夹具如下:

<form id="test-form">
            <input style="display: none;" type="text" value="" name="area" id="area">
            <input type="text" value="" name="switcher" id="switcher">
</form>

这是我的javascript测试代码

TestCase('test focus within a focus event', {
    setUp: function() {
        this.$form = $('#test-form');
    },

    'test focus switcher, area should be focused': function() {
        function focusHandler(){
            $('#area', this.$form).show();
            $('#area', this.$form).focus();
        }
        $('#switcher', this.$form).live('focus', focusHandler);
        $('#switcher', this.$form).focus();

        assertTrue($('#area', this.$form).is('focus'));
    },

});

1 个答案:

答案 0 :(得分:0)

除了选择器应该是':focus'而不是'focus'这一事实,我没有任何其他可靠的建议。你不应该经常重新找东西。尝试:

TestCase('test focus within a focus event', {
  setUp: function () {
    this.$form = $('#test-form');
  },

  'test focus switcher, area should be focused': function () {
    function focusHandler() {
      $('#area', this.$form).show().focus();
    }

    var $switcher = $('#switcher', this.$form);
    $switcher.live('focus', focusHandler);

    $switcher.focus();

    assertTrue($('#area', this.$form).is(':focus'));
  }