Как проверить фокус в событии фокуса с помощью 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'));
}