jasmine framework tutorial including jasmine jquery with examples
Тази статия обхваща рамката за тестване на жасмин и неговите конструкции. Също така научете за Jasmine-Jquery пакет, който разширява Jasmine за тестване на Jquery приложения:
Научихме всичко за Карма в предишния ни урок от тази поредица.
В този урок ще научим как да използваме Jasmine за писане на тестове за уеб приложение на JavaScript и също така ще разберем как да използваме възловия пакет Jasmine-Jquery за тестване на уеб приложението Jquery.
Тук ще се съсредоточим основно върху основните конструкции на Жасмин за писмени тестове.
как да стартирам swf файл в хром
Да започваме!!
Какво ще научите:
Какво представляват тестовите рамки?
Тестовите рамки са пакети от програми или пакети, които улесняват тестването на друга програма, за да се гарантира нейното качество. Всяка платформа за програмиране има своя собствена рамка за тестване, както трябва да сте научили от предишния ни урок.
Съществуват различни набори от тестове, които могат да се провеждат на всяка софтуерна система. Примери от тези тестове включват единично тестване, изпитване от край до край (e2e) и др. Проверете тук за повече информация.
Примери на тестовите рамки за приложения на JavaScript включват Mocha, Jasmine, стажант, шега, Qunit и др.
Въведение в рамката на Жасмин
В днешния сценарий има различни подходи за развитие. От тях два от най-популярните подходи за разработване включват разработено чрез тест (TDD) и поведенческо развитие (BDD).
Тест-управляемото развитие е подход за разработка, при който първо пишем тестовете и след това ги стартираме. Всеки тест се проваля при първото му изпълнение, тъй като функциите, които използва, все още не са написани.
След това записваме функциите и рестартираме тестовете. Тук някои от тестовете се провалят, а другите преминават. Продължаваме да рефакторираме кода, за да преминат всички тестове.
Развитието на поведенческото развитие също следва същия подход. Единствената разлика е, че BDD е написан, за да задоволи собствениците на софтуера (ориентиран към клиента / бизнеса), т.е.за да отговори на функциите на софтуера с бизнес изискванията или очакваното поведение.
Докато TDD е написан, за да задоволи разработчиците на софтуера, за да може да се гарантира, че софтуерните функции, които се използват при изграждането на характеристиките, дават точни резултати, стабилни и надеждни.
Вижте тук за да научите повече за TDD срещу BDD.
Jasmine е рамка за тестване на JavaScript, която е поведенческа, което улеснява писането на тестове и не зависи от друга рамка.
Има два начина да използвате Жасмин, за да напишете тестовете си. Един от начините е да се използва самостоятелната версия, която идва с specRunner.html (която показва резултатите от теста в браузър). Другият начин е просто да инсталирате Jasmine, да напишете тестовете си и да го стартирате с тест-бегач като Karma, за да получите резултатите, показани в прозореца на конзолата.
Бихме разгледали и двата начина за използване на Жасмин в нашия предстоящ урок.
Основни конструкции от жасмин за писане на тестове
По-долу са изброени различните конструкции на Жасмин за тестове за писане.
Да видим!!
# 1) описва: Тази конструкция се използва за писане на тестов пакет. Тестовият пакет е колекция от множество тестове. „Описва“ е функция сама по себе си, която приема два параметъра: Името на пакета и функция .
Параметърът на функцията съдържа колекция от тестове, групирани под тестовия пакет.
# 2) то: Тази конструкция се използва за писане на спецификация за тест. Тестова спецификация е набор от конструкции, които тестват определено или най-малко очакване за система.
Подобно на описаната конструкция, тя също отнема два параметъра: Името на теста и функцията, която съдържа твърденията, оценяващи дали очакването е изпълнено или не.
# 3) очаквайте : Тази конструкция помага при тестване дали очакванията от софтуерната система са изпълнени или не.
Отнема параметър, наречен действителен (което е резултатът, който софтуерната система връща) и след това се оковава с друга конструкция, наречена съвпадение (очакван резултат).
# 4) Мачове : Това е колекция от конструкции, към които е свързана очакваната конструкция. Той определя дали очакването е изпълнено или не.
Тези конструкции вземат очакваната стойност на най-близкия провеждан тест и я сравняват с действителната стойност, получена при изпълнението на теста. Щракнете тук за пълен списък на конструкциите за съвпадение на жасмин
# 5) beforeEach : Това е глобална конструкция, предоставена от Jasmine, за да ви помогне да запазите тестовете си СУХИ (не се повтаряйте). Тази конструкция обикновено се използва във функционалния параметър на описаната конструкция.
Всеки код вътре се изпълнява веднъж, преди да се изпълнят спецификациите под пакетите. Следователно, всеки код, който искате да бъде стартиран първо преди всички спецификации в пакета, трябва да бъде поставен тук.
# 6) afterEach: Тази конструкция е същата като beforeEach и разликата е, че кодът, който съдържа, се изпълнява след всеки код, след като се изпълни описаната конструкция.
# 7) това : Тази конструкция е празен обект, който може да се използва за споделяне на стойности между ‘beforeEach’, ‘afterEach’ и ‘it’ конструкции във всеки тестов пакет. Всеки тестов пакет има свой собствен обект и обектът се нулира до празен, преди да се изпълнят тестовите пакети.
# 8) xdescribe : Тази конструкция се използва за деактивиране на софтуерните пакети. Той просто казва на тестващия бегач да пропусне тестовия пакет и следователно резултатът му не се показва и разглежда.
въпроси и отговори от теста за осигуряване на качеството
# 9) хит : Тази конструкция се използва за обозначаване на спецификация в пакет като предстояща спецификация. Чакащата спецификация е спецификация, която няма да се изпълни, но имената им ще бъдат показани в резултата от теста като чакащи.
Също така, ако във всяка спецификация се извиква чакащата функция, тогава спецификацията се маркира като чакаща спецификация. Всички спецификации, декларирани без тяло на функция, също са маркирани като чакащи.
# 10) шпионка : Тази конструкция се използва за създаване на шпионин от жасмин. Шпионите са подигравки. Подигравките са фалшиви обекти, създадени да представят или имитират реалния обект. Изискванията са необходими, за да се предотвратят режийните разходи за създаване на реалния обект, който те представляват.
Същността на модулното тестване на код е да се види как една функция се държи при няколко условия, независими от другите свързани единици или ще бъде свързана с нея.
По този начин ние извършваме тестване на предни устройства, за да видим как ще се държи единица от предния край на нашия софтуерен продукт независимо от другите предни устройства, които ще бъдат свързани или са свързани към него.
По време на този тест ние се обаждаме на различни аргументи и функции, които могат да зависят от други функции и обекти като мрежови връзки, източници на данни и файлове.
За да отговорим на тези зависимости (за да можем да извършим тестване на предни устройства), е необходимо да предоставим необходимите ресурси. Следователно ние приемаме подигравки, за да имитираме обектите от реалния свят и да избегнем режийните разходи за действителното им създаване.
Имайте предвид, че на обикновено ниво spyOn се използва за тестване дали всъщност се извиква зависима функция и тази зависима функция може просто да е проста функция, която е дефинирана върху обекта, който шпионираме.
Функцията spyOn взема два параметъра: обектът, който се шпионира, и функцията на зависимостта, която съдържа, която се проверява, за да се увери, че нашата функция го извиква.
Шпиони съществуват в пакета или спецификацията, в която е дефиниран. След изпълнението на пакета или спецификацията шпионинът спира да съществува.
# 11) createSpy: Тази конструкция служи на същата цел като spyOn, но разликата е, че тази функция позволява да се замени зависимата функция с фалшива за тестване.
Защо трябва да направя това? Това е полезно, когато оригиналната зависимост зависи и от другите ресурси, които не са налични в контекста на теста.
Тази функция е достъпна с помощта на Jasmine обект с точка, т.е. Jasmine.createSpy (параметри). Той отнема само един параметър, който е низ, представляващ името на зависимостта, за която създаваме макет.
Имайте предвид, че след създаването на шпионин, шпионинът на първото повикване се връща недефиниран, тъй като първото повикване се приема за негово обучение. След това, след последващи повиквания, функцията връща действителната стойност. Вижте повече подробности, докато го изследваме по-долу.
Тест за жасмин Двойна функция
Конструкциите spyOn и createSpy правят създаването на макети (за зависимост) възможно. Това не е нищо друго освен тестване на две функции в един тест, следователно изявлението „тестване на двойна функция“.
Другата дума, която може да се използва за означаване на подигравки, е „мъничета“.
Шпионски мачове: Има няколко съвпадения, които отговарят на необходимостта от взаимодействие със шпиони. Те включват: „ToHaveBeenCalled“ и „toHaveBeenCalledWith“ .
-
- toHaveBeenCalled : Това се използва в спецификация, за да се определи дали е била извикана зависимостта, която се шпионира.
- toHaveBeenCalledWith : Това се използва в спецификация, за да се определи, че шпионираната зависимост е била извикана с определен набор от параметри.
Посетете тук за подробен контур на всички конструкции на Жасмин.
сортиране на балончета в c ++
Два начина за използване на жасмин
Има два начина да напишете тестове за жасмин. Единият е да използвате Jasmine като самостоятелна дистрибуция чрез specRunner, а другият използва Jasmine с тестов бегач.
Нека първо разгледаме провеждането на тестове Jasmine чрез specRunner.
Как да използвам Жасмин самостоятелно разпределение?
Щракнете тук и след това изтеглете самостоятелната дистрибуция, като щракнете върху Жасмин - самостоятелен .
Разархивирайте файла в папката на проекта. Ще откриете, че той добавя тези директории към директорията на проекта: lib, src и spec; и също добавя тези файлове: specRunner.html и MIT.LICENSE.
Директорията lib съдържа библиотеката Jasmine, която изпълнява тестовете, съдържащи се в тестовите файлове, добавени към файла specRunner.html. Файлът specRunner.html ви позволява да стартирате теста и да видите резултата в браузъра във формат на уеб страница, а не в прозореца на конзолата.
Директорията src съдържа предни крайни кодове, а директорията spec съдържа тестовите файлове, написани с тестови пакети на Jasmine. По подразбиране можете да видите някои тестови пакети и файлове в директориите, но няма да ги използваме, а ще напишем собствени тестове в следващите ни уроци.
Използване на жасмин с тестващ бегач
Това е вторият начин за използване на Jasmine, където конфигурирате тест-бегач като Karma и го подавате с вашия изходен файл и тестовия спецификационен файл, за да стартирате тестовете.
След това можете да покажете резултатите и да генерирате отчети с помощта на Истанбул, или да публикувате резултатите от теста на coveralls.io.
Въведение в Jasmine-Jquery
Jasmine-Jquery е възел, който подпомага тестването на предни кодове, изградени с jquery. В известен смисъл той разширява рамката на Jasmine, за да бъде подходящ за тестване на предния край на Jquery.
Разширенията, които добавя към рамката на Jasmine, включват:
- Набор от персонализирани съвпадения за рамката на Jquery, като toBeChecked, toBeDisabled, toBeEmpty и др.
- API за обработка на HTML, CSS и JSON тела в нашите спецификации.
Сега въпросът е „какво е API?“ API (интерфейс за програмиране на приложения) е интерфейс, който ви дава достъп до определени функции, които могат да отнемат време и ресурси, за да ги изградите от нулата.
Друг е въпросът какви са осветителните тела? Приспособленията са предварително дефинирани състояния на обект, които обикновено създаваме, докато пишем тестове, за да установим базова линия (добре позната и фиксирана среда), спрямо която се провеждат тестовете, за да направим резултатите повторяеми.
Вижте тук за повече подробности относно персонализираните съвпадения и API (и).
Заключение
В този урок се опитахме да разберем какво е рамка за тестване и въведохме Jasmine като рамка за тестване на JavaScript. Разгледахме различни конструкции на Jasmine, които могат да бъдат използвани за писане на тестови спецификации и накрая въведохме Jasmine-Jquery, който е базиран на възли пакет, който разширява Jasmine, за да може да тества приложенията на Jquery.
Вземане
- Рамката за тестване е набор от програми или пакети, които улесняват тестването на софтуера, за да се гарантира качеството на разработения софтуер.
- Jasmine е поведенчески инструмент за разработка, който осигурява конструкции, които улесняват писането на тестови спецификации за JavaScript приложения.
- Тест-управляемото развитие е подход за разработка, при който първо пишем тестовете и след това ги стартираме. Всеки тест се проваля при първото му изпълнение, тъй като функцията, която използва, все още не е написана. След това записваме функциите и пускаме отново тестовете. Тук някои от тестовете се провалят, а други преминават. След това продължаваме да рефакторираме кода, докато преминат всички тестове.
- Подходът за разработване на поведенчески подход е подход за разработване, при който се пишат тестове, за да се установи дали функциите на софтуера се държат според очакванията на всички заинтересовани страни.
- Jasmine-Jquery е възел, който подпомага тестването на предни кодове, изградени с Jquery.
Следващ урок
В нашия предстоящ урок ще проучим начините за използване на тези два инструмента (Жасмин и Карма), за да напишем тестови спецификации за типичен проект. Ще видим и как да използваме другите инструменти като gulp, browserify и др., Които са необходими, за да стартират и тестват нашите тестове.
PREV Урок | СЛЕДВАЩ урок
Препоръчително четене
- 8 Инструмента за най-добро поведенческо развитие (BDD) и рамки за тестване
- Как тестерите се включват в TDD, BDD и ATDD техники
- TDD Vs BDD - Анализирайте разликите с примери
- Рамка за BDD (поведенческо развитие): Пълен урок
- Как да напиша документ за тестова стратегия (с примерен шаблон за тестова стратегия)
- 10 най-добри инструмента за тестване на API през 2021 г. (SOAP и REST API инструменти за тестване)
- Урок за API тестване: Пълно ръководство за начинаещи
- Урок за Python DateTime с примери