1

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

一件奇怪的事情是,如果我在这个测试函数中使用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'));
    },

});
4

1 回答 1

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'));
  }
于 2011-07-02T04:41:36.683 回答