Как проверить фокус в событии фокуса с помощью jsTestDriver

В настоящее время я использую jQuery 1.6.1 и инфраструктуру jsTestDriver для тестирования следующего фрагмента кода. Основная цель - проверить, получил ли фокус элемент ввода "#area" после запуска "#switcher" с событием focus. Это не прошло испытание, но я не вижу причин, почему это должно потерпеть неудачу.

Одна странная вещь заключается в том, что если я установлю точку останова с помощью firebug в firefox в этой тестовой функции, тест успешно пройдет после того, как я нажму кнопку запуска позже.

Кто-нибудь сталкивался с такой же проблемой? или это ошибка фреймворка 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 ответ

Кроме того факта, что селектор должен быть ":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'));
  }
Другие вопросы по тегам