Започвам да пиша 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, за да разбера какво не е наред.