Съдържание
Днес е подходящ момент да бъдете програмист JavaScriptМоже да се каже, че това е дори вълнуващо, тъй като технологиите, които го обхващат, са узрели доста, уеб браузърите са по -стандартизирани и всеки ден се появяват все повече нови неща, с които да играете и експериментирате.JavaScript е утвърден език и мрежата е основната платформа днес, където видяхме появата на приложения за една страница, разпространението на MVC рамки като AngularJS или Backbone.js, използвайки JavaScript от страна на сървъра с Node.js и дори мобилни приложения, създадени единствено с помощта HTML, CSS Y JavaScript с технологии като PhoneGap.
От скромното си начало JavaScript е отговорен да служи като език за манипулиране на данните и валидиране във формите в HTML и в момента се използва за създаване на мощни приложения, които можем да видим в мрежата. Виждайки това, може да се каже, че JavaScript Измина доста дълъг път, както и инструментите, които се появиха, за да гарантират, че имаме същото качество, сякаш бяхме на други езици.
Един от тези инструменти е Жасмин, което не е нищо повече от ориентирана към поведението рамка за развитие и която ни позволява да създаваме автоматизирани единични тестове за езика за програмиране JavaScript. Преди да влезем изцяло с този инструмент, нека видим предисторията, която е довела до неговото развитие, както и ключови концепции, за да разберем как работи JavaScript.
Днес никой не се съмнява в силата на JavaScriptСъществуват обаче усложнения при работата от страна на клиента и една от очевидните причини е, че не можем да контролираме средата за изпълнение. На сървъра нямаме този проблем, тъй като можем да стартираме конкретна версия на Node.js но в случая с уеб браузъра не можем да кажем на потребителя да използва конкретна версия на Chrome или Firefox.
Езика JavaScript е дефинирано в спецификациите ECMAScript така че всеки браузър може да има собствена реализация на средата, за да го стартира, което води до малки разлики или грешки между тях. Всеки обект на JavaScript той е променлив, така че нямаме никакъв контрол, който да предотврати презаписването на модул от други части, за да илюстрираме това, нека разгледаме малък сегмент от код, където можем да видим колко лесно е да се презапише глобалната функция console.log:
console.log ('тест'); console.log = 'break'; console.log ('тест');Нека видим отговора по конзола, където можем ясно да видим грешката, тъй като сме презаписали функцията:
Този начин на съществуване на езика беше решение, взето в неговия дизайн, тъй като позволи на разработчиците да добавят липсващи функционалности към него, но предвид тази гъвкавост е сравнително по -лесно да се правят грешки, дори по -нова версия на езика въведе функция Object.seal което предотврати това, но неговата поддръжка се разшири само до няколко браузъра.
Друг проблем, който представяме JavaScript е обработката на типове, на други езици израз като '1' + 1 вероятно ще доведе до грешка, но в JavaScript това би довело до 11. Това може да доведе до няколко трудни за намиране проблеми, да предположим например, че имаме следното:
var a = 1, b = '5', c = 4, d = 2; var резултат = a + b + c * d; console.log (резултат);Нека видим отговора през конзолата, когато стартираме нашия код в браузъра:
Както виждаме, резултатът беше низ, така че ако очаквахме число в специална функция или рутина, това може да причини проблем и намирането на тази грешка може да означава загуба на няколко часа от нашето ценно време за разработка.
Важно е да споменем, че точките, които току -що споменахме, не са причина да не се използват JavaScriptПросто трябва да видим къде има някои слабости, но това не означава, че това е лош език, дори можем да гарантираме, че възможностите, които ни представя, са безкрайни по отношение на разработката на приложения и какво е по -добре, все още имаме инструменти, които ние ще им помогнем с най -добрите практики на същите.
Както споменахме, Жасмин Това е малка рамка, която ни помага с нашите единични тестове в рамките на нашите разработки и която използва философията на ориентирано към поведението развитие, която ще обясним по-късно, но преди да продължим, нека видим важна концепция, а именно, че те са единични тестове.
Единични тестовеThe единични тестове Те са парчета код, които тестват функционалностите на блоковете в кода на нашето приложение, което в началото на този път на разработчика беше оставена с традиционна философия, която се фокусира върху тестово-ориентирано развитие, вместо ориентирано към поведението.
Ето защо създателите на Жасмин те преструктурират този традиционен начин на тестване, при който разработчикът остава без ясна представа откъде да започне в процеса на тестване, без да знае какво да тества и колко голям може да бъде тестов модул или дори какво биха нарекли един от тези тестове . Например, ако използваме философията на Жасмин Да предположим, че имаме музикален плейър, който ще има следните критерии за приемане: Като се има предвид плейърът, когато песента е поставена на пауза, тогава плейърът трябва да посочи, че песента е била поставена на пауза.
Така че можем да вземем критерия и да го разделим, както следва:
- Дадено (първоначален контекст)
- Когато (Събитието се случва)
- След това (предприема се действие)
description ("Player", function () {description ("Когато песента е на пауза", function () {it ("Тя трябва да показва, че песента е поставена на пауза", function () {});});});Както виждаме, нашите критерии бяха прехвърлени на Жасмин без много проблеми, където можем да кажем, че всеки критерий се превежда в единичен тест.
Вече бихме могли да разгледаме как Жасмин той обработва критериите и ги превежда в своя синтаксис, създавайки единичните тестове за него, но за да стигнем там, нека първо да видим как първо да получим рамката. За да направите това, отиваме на страницата на проекта и я изтегляме:
Увеличете
Когато го разархивирате, трябва да отидем в папката dist, там ще намерим всички дистрибуции на Жасмин към днешна дата, където да започнем да го използваме, трябва да изберем дистрибуцията, която искаме, за предпочитане най -новата и да я разархивираме в папката на нашия проект, да влезем в папката и да изпълним файла SpecRunner.html:Жасмин Той включва по подразбиране някои примери за някои единични тестове, където файлът SpecRunner.html отговаря за свързването на кода Jasmine, който включва изходните файлове и файловете за тестване, нека видим съдържанието му:
Jasmine Spec Runner v2.2.0Както виждаме, той е доста прост и ни позволява да дефинираме основна структура за нашите тестове, като ни дава помощ откъде да започнем в този свят на единични тестове. От само себе си се разбира, че е добра идея да разгледате кода на нашето разпространение на Жасмин за да се запознаем с начина на работа.
Важно е да споменем това Жасмин не само да се ограничава до код, написан с чист JavaScript, ние можем да тестваме тези приложения, създадени с Backbone.js или AngularJS, дори неговата гъвкавост отива много по-далеч и ни позволява да извършваме тестове от страна на сървъра в случай, че използваме Node.js.
ПрепоръкаЖасмин Това е рамка, която ни помага много по пътя на единичните тестове, но концепциите, използвани в нея, не са толкова прости, тя се поддържа от някои напреднали практики на JavaScript като генериране на HTML с помощта на функцията createDom () за да вмъкнете елементите в него, да споменем някои от тези характеристики, затова препоръчваме да се разходите из документацията на JavaScript да бъдем много по -подготвени за бъдещи уроци.
С това завършихме този урок, където бихме могли да направим първите си стъпки Жасмин, преминавайки малко през мотивацията за създаване на инструменти за тестване JavaScript и как ориентираното към поведението развитие ни помага да създаваме по-добри тестове, като виждаме и как Жасмин е доста гъвкава рамка за тестване, която ни позволява да използваме един и същ екземпляр за тестване на всички видове код в JavaScript в нашите приложения.