Как проверить фокус в событии фокуса с помощью jsTestDriver - PullRequest
1 голос
/ 22 июня 2011

В настоящее время я использую инфраструктуру 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 Ответ

0 голосов
/ 02 июля 2011

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