Я начинаю писать тесты Qunit для своих существующих плагинов jQuery. Я прошел полдюжины тестов стиля конфигурации, чтобы убедиться, что все подключено правильно. Теперь приступаю к тестированию функциональности. Мой плагин представляет собой плагин в стиле обратного отсчета для текстовых полей. Вот реальная рабочая версия:
http://andymatthews.net/code/textCounter/
Я пишу тест, который проверяет, что количество, отображаемое под полем, является правильным значением. Например, если поле позволяет использовать 100 символов, а при загрузке страницы в поле содержится 20 символов, метка под полем должна иметь значение 80.
Вот что в qunit-fixture:
<div id="qunit-fixture">
<textarea id="myTextarea">Existing content</textarea>
<span id="theCounter"></span>
</div>
Вот соответствующий неудачный тест
test('setup', function(){
console.log($('#theCounter'));
equal($('#theCounter').text(), 124, 'count correctly initialized');
});
А вот и существующее содержимое плагина. Это еще не все, но я добавляю больше кода только по мере того, как существующие тесты проходят проверку.
(function($) {
$.fn.textCounter = function(o){
o = $.extend( {}, $.fn.textCounter.defaults, o );
return this.each(function(i, el){
var $e = $(el),
$target = $(o.target);
// predefined count minus existing content
$e.html(o.count - $target.text().length);
console.log( $e.html() );
});
}
$.fn.textCounter.defaults = {
count: 140,
alertAt: 20,
warnAt: 0,
target: '#myTextarea',
stopAtLimit: false
}
}(jQuery));
Я предполагаю, что, поскольку я явно не настраиваю плагин на странице тестовой оснастки, плагин использует значения по умолчанию. Если это так, то счетчик должен начинаться с максимальных 140 символов минус 16 символов, уже находящихся в поле, и должен отображать 124.
Вот в чем проблема... когда запускается образец HTML-страницы, он правильно отображает 124. Когда тест запускается, он возвращает $('#theCounter').text()
в виде пустой строки. При просмотре консоли после запуска пробной страницы И теста приведенный выше оператор журнала показывает 124. Но модульный тест показывает пустую строку.
Это не секрет, поэтому я могу предоставить все файлы, если это поможет. Я уверен, что это, вероятно, какая-то проблема с областью действия, но у меня недостаточно опыта работы с QUnit, чтобы понять, что не так.