jest configuration debugging jest based tests
Научете за Jest Config, отстраняване на грешки и сравняване на Jest с други рамки за тестване на JavaScript, специално Jest срещу Mocha и Jest срещу Jasmine:
В това Информативна серия Jest , разгледахме всичко Тестване на React Apps, Mocks и Spies с Jest в последния ни урок.
В този урок ще научим повече за Jest Config файловете и ще видим как всъщност можете да отстраните грешките на Jest тестове за отстраняване на неизправности при един или повече множество тестове.
Също така ще проучим някои от често използваните опции във файла Jest Config, които могат да бъдат настроени независимо в проект или тези, които могат да бъдат добавени като част от самата конфигурация на package.json.
примери за анализ на първопричината разработка на софтуер
Ще използваме Visual Studio Code за писане на нашите Jest тестове и ще използваме разширение или приставка в VS Code, за да активираме поддръжката за отстраняване на грешки за Jest тестове.
Освен това ще сравним различните рамки за тестване на Javascript като Mocha и Jasmine с Jest и ще разберем плюсовете и минусите един на друг.
Какво ще научите:
Има Config
Конфигурацията на Jest може да бъде зададена по 3 начина
- Чрез ключ в файл package.json.
- Чрез файл jest.config.js - Конфигурационен файл, написан като модул.
- Чрез JSON, който може да се използва с опцията като –config flag.
С всички горепосочени подходи можете да постигнете същия резултат. Нека видим първата стъпка - т.е. добавяне на Jest конфигурация чрез ключ в файл package.json.
В съществуващия файл package.json добавете нов ключ, наречен „jest“. Това не е нищо друго освен набор от двойки ключ-стойност във формат JSON. Всички опции за конфигурация, свързани с Jest, могат да бъдат допълнително добавени към този раздел във файла package.json.
Най-често използваните опции за конфигурация са изброени по-долу.
# 1) Свързани с покритие
collectCoverage, покритиеThreshold, покритиеReporters, покритиеДиректория - Това са най-често използваните опции. Покритието е важен показател и гарантира, че кодът се тества спрямо предварително зададен праг.
Подробно обяснение на всеки от тях е както следва:
# 1) collectCoverage: Тази опция се използва, за да посочим дали искаме тестът на Jest да събира информация за покритие или не. Когато е зададено на true, бегачът Jest събира информация за покритието. С тази опция покритието ще бъде събрано и показано на конзолата в края на тестовото изпълнение, както е показано по-долу.
# 2) Праг на покритие: Тази настройка ни позволява да посочим праговите стойности за покритие в процентно изражение. Това е много полезно, когато организацията или екипът искат да се придържат към определена минимална стойност на покритието, без която нито един код не може да бъде изтласкан или обединен в основния клон.
Нека да видим как това може да се използва.
Покритието може да бъде посочено на глобално ниво, на ниво файл или друг регекс. Когато е посочено на глобално ниво, всички посочени прагове трябва да съвпадат за комбинираните всички файлове в проекта.
'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 } }
Посочването на покритие на ниво файл също е възможно чрез промяна на „глобално“ на име на файл или регулярно изражение. Конфигурациите на прага могат да варират в зависимост от изискването.
'coverageThreshold': { './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }
# 3) покритие Репортери: Тази конфигурация се използва, за да посочи какъв репортер искате да използвате, за да генерирате отчет за покритието. Има много съществуващи репортери като налични NPM пакети, които могат да се използват за генериране на отчет за покритие в края на изпълнението на теста.
# 4) покритие Директория: Тази настройка позволява на потребителя да посочи директорията, в която отчетите за покритието да бъдат запазени или запазени след създаването им.
По-долу е даден комбиниран пример за използване на всички конфигурационни настройки, свързани с покритието.
'jest':{ 'collectCoverage':true, 'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 }, './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }, 'coverageReporters': ( 'lcov','text' ), 'coverageDirectory': './output/code-coverage/' }
Тук използвахме 2 репортера на покритие, т.е. lcov и text.Lcov е покритие на линията на Linux и присъства по подразбиране, а репортерът „text“ означава, че изходът на покритието също ще бъде показан на конзолата. Отчетът за покритието ще бъде генериран по пътя, посочен в настройката “покритиеДиректория”.
# 2) Смешно свързано
Подигравките се използват много по време на тестване с Jest. И двете опции за конфигурация по-долу позволяват лесно конфигуриране и изчистване на подигравките.
- autoMocks: Когато е зададено на true, това ще подиграва всички модули, които са импортирани в теста по подразбиране.
- clearMocks: Когато е зададено на true, това ще изчисти всички подигравани настройки / модули след всеки тест, така че всеки тест да започне с ново състояние. Това може да се постигне и с помощта на testCleanup или метода “after”, но ако го настроите в config, това го прави още по-лесно.
# 3) Свързани тестове
# 1) testTimeout: Тази конфигурация се използва за осигуряване на настройка за твърд таймаут за тестове в милисекунди. Всеки тест, поемащ повече от този конфигуриран праг, ще бъде означен като неуспешен поради изключение за изчакване.
'jest' { 'testTimeout': 100 }
# 2) Глобално: Тази конфигурация се използва за задаване на глобални променливи, които трябва да бъдат достъпни при всеки тест.
'jest' { 'globals': { 'globalVar': 'test global variable!' } }
Нека опитаме да използваме глобална променлива в теста и да видим дали работи както се очаква.
describe('Calculator tests', () => { test('add 2 numbers', () => { // arrange & act const val = mathOps.sum(3,4) console.log(globalVar) // assert expect(val).toBe(7) })
След изпълнението на този тест стойността на globalVar трябва да се регистрира.
Проверете тук за изчерпателния списък на всички опции за конфигуриране.
Видео урок за конфигурация на IS
Отстраняване на грешки с помощта на Jest
В този раздел ще се опитаме да разберем как можем да отстраняваме грешки, написани на базата на Jest.
Ще приложим и ще разберем 2 различни начина, по които можем да отстраним грешките на Jest тестовете.
къде са apk файлове, съхранявани на android
- Вътрешният дебъгер на Node и след това с помощта на Chrome Inspector за отстраняване на грешки в тестовете.
- Използване на конфигурацията за отстраняване на грешки на Visual Studio Code за отстраняване на грешки в тестовете в самия редактор на Visual Studio Code. Това е най-често използваният начин за отстраняване на грешки, тъй като Visual Studio Code е избраният редактор по подразбиране за повечето от разработките на Javascript в наши дни.
Всеки от тези подходи е обяснен подробно по-долу.
# 1) Използване на Node’s Native Debugger
За да използваме родния дебъгер на Node JS, трябва да вмъкнем ключовата дума „дебъгер“ в теста, където искаме да поставим точката на прекъсване.
След като изпълнителят на теста срещне дебъгер команда, тя поставя на пауза изпълнението и ако прикачим инструменти за отстраняване на грешки в хром, тогава можем да отстраним грешките на тестовия код (както и на тестваната функция), като използваме инструментите на Chrome.
Браузърът Chrome е предпоставка тук, за да се използва Native Debugger на Node.
Моля, следвайте стъпките по-долу.
# 1) Добавете ключова дума за отстраняване на грешки в теста, т.е. в точката, където искате тестът да достигне точката на прекъсване, вмъкнете командата „дебъгер“
# две) Изпълнете теста, като използвате флага –inspect-brk.
Използвайте командата по-долу, за да изпълните теста в режим на точка на прекъсване.
/usr/local/bin/node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand
# 3) Прикрепете дебъгъра на Node в Chrome. Сега в браузъра Chrome отидете до chrome: // проверете и се свържете с целевия слушател, създаден от горната стъпка.
# 4) Продължете изпълнението и ще видите, че точката на прекъсване удря в инспектора за отстраняване на грешки на chrome и можете да отстраните грешките в стека на повикванията и състоянието на обекта в самия chrome дебъгер.
какво е mkv файл и как да го възпроизведа?
Този подход за отстраняване на грешки на Jest тестовете е добре, но не е много удобен за потребителя, тъй като трябва да продължите да превключвате от редактора на код към Chrome и обратно, което причинява много триене. В предстоящия раздел ще видим начините за конфигуриране на дебъгера в самия редактор на Visual Studio Code.
# 2) Използване на конфигурацията за отстраняване на грешки на VS Code
# 1) Изберете секцията за отстраняване на грешки / изпълнение на кода на Visual Studio от левия панел.
# две) Сега ще актуализираме конфигурацията за отстраняване на грешки за тестове за шега. За целта добавете нова конфигурация, като изберете опцията от менюто.
# 3) След като бъде избрана опцията за добавяне на конфигурация, тя ще отвори файла `launch.json` със съдържанието по подразбиране в прозореца на редактора. Премахнете съдържанието по подразбиране и копирайте съдържанието по-долу, за да създадете конфигурация за отстраняване на грешки за тестовете Jest.
{ 'version': '0.2.0', 'configurations': ( { 'name': 'Debug Jest Tests', 'type': 'node', 'request': 'launch', 'runtimeArgs': ( '--inspect-brk', '${workspaceRoot}/node_modules/jest/bin/jest.js', '--runInBand' ), 'console': 'integratedTerminal', 'internalConsoleOptions': 'neverOpen', 'port': 9229 } ) }
# 4) Запазете новодобавената конфигурация на съдържанието, която ще се използва за отстраняване на грешки в тестовете Jest. Ако прочетете внимателно конфигурацията, тя е подобна на тази, която направихме, когато се опитахме да се свържем с дебъгера на Node в инструментите на Chrome Developer чрез командата.
--inspect-brk ./node_modules/jest/bin/jest.js --runInBand
Предимството на конфигурацията тук е, че тестовете ще се стартират / отстраняват като част от самия редактор (в този случай това е VSCode) и не е необходимо да се свързваме с външно приложение.
# 5) След като бъде създадена конфигурацията за отстраняване на грешки, вече можете да добавяте точки на прекъсване към тестовете и да изпълнявате с помощта на тази RUN конфигурация. Това ще гарантира, че тестът спира в точките на прекъсване и можете да отстранявате грешки в стойностите, състоянието на обекта в точката на прекъсване в действителния тестов файл.
Точки на прекъсване могат да се добавят, като щракнете близо до редовите номера в кодовите файлове.
# 6) След като точката на прекъсване е добавена, можем да изберем конфигурацията за изпълнение, която добавихме в стъпка # 3, за да изпълним / отстраним грешката на теста.
# 7) При избиране / щракване върху бутона Run, трябва да можете да видите, че изпълнението удря точката на прекъсване, която е поставена, и можете да получите повече подробности като стойности на околната среда / променливи, проследяване на стека и др.
Бутоните за контрол на точката на прекъсване / кода могат да се използват за придвижване към следващата точка на прекъсване или за преместване във функцията за повече подробности.
Видео урок Той ЕОтстраняване на грешки
Има Mocha Vs Jasmine
В раздела по-долу ще сравним Jest срещу Mocha и Jest срещу Jasmine по различни параметри и сравнения на функции като Snapshot тестване, Лесна конфигурация и Възможности на различни рамки.
Параметър | Е | Мока | Жасмин |
---|---|---|---|
Поддържани типове тестване | Използва се предимно за модулно тестване. | Единично тестване | Единично тестване и тестване E2E. |
Snapshot тестване | Напълно поддържан - специално използван за React компоненти, Jest поддържа правене на моментни снимки на компонент и използването му за сравняване на тестовия изход със запазената структура на компонента. Моментните снимки са чудесен начин да се гарантира, че потребителският интерфейс не се променя неочаквано. | Няма поддръжка | Няма поддръжка |
Твърдения и съвпадения | Използвайте библиотеката awa.js за съвпадения. | Поддръжка за вградения модул за утвърждаване на Node и може да включва и други библиотеки за твърдения. | В изградени твърдения |
Подигравателен | Напълно изграден в подкрепа на Mocks and Stubs в Jest. | Не е вградена поддръжка за подигравки или смачкване. Може да се използва с други библиотеки като Sinon за поддръжка на Mocking. | Вградена ограничена поддръжка, използваща spyOn. Може да се интегрира с други библиотеки. |
Скорост на изпълнение | 4x Тестовете Jest са изолирани в собствената им пясъчник. По този начин тестовете Jest по същество се изпълняват паралелно, поради което осигуряват значително подобрение на времето за изпълнение. | х Не поддържа паралелно изпълнение на тестове. | х Не поддържа паралелно изпълнение на тестове. |
Конфигуриране и настройка | Много лесно - нулева конфигурация е необходима. | ||
Начин на изпълнение на теста | Без глава | Без глава | Без глава |
Тестови резултати и контекст | Генерира богат контекст след изпълнение - Jest предоставя подробен тестов контекст, за да се задълбочи в това, което е причинило отказ, като по този начин осигурява лесно отстраняване на грешки. | Изходът на теста не е много четлив и прави отстраняването на грешки малко предизвикателно. | |
Отстраняване на грешки | Поддръжката на родните дебъгери на Node може също да се използва за отстраняване на грешки в редактори като Visual Studio Code чрез отделна конфигурация за стартиране. | Поддържа роден дебъгер на Node. | Може да използва тест за карма за стартиране на тестове в Chrome и отстраняване на грешки. |
Покритие на кода | Jest има вградена поддръжка за покритие на кода. Конфигурацията на покритие може да бъде посочена в конфигурацията Jest и отчетите могат да се генерират при всяко изпълнение на теста. | Няма вградена поддръжка. Осигурява поддръжка на външни библиотеки за генериране на отчети за покритие. | Същото като Мока |
Стил на тестване | BDD И трите рамки поддържат тестове, които трябва да бъдат написани като набор от спецификации или спецификации, които ги правят по-четливи. | BDD | BDD |
Заключение
В този урок научихме за различните начини, по които можете да отстранявате грешките си Jest тестове в Visual Studio Code или в Chrome Inspector, използвайки родния дебъгер на Node.
Също така проучихме често използваните опции за конфигуриране в конфигурационния файл Jest. Конфигурацията Jest помага да се постигнат много неща като покритие на кода, Html отчети, настройка на фалшиво поведение, настройка на глобални променливи и т.н.
Препоръчително четене
- Урок за Jest - Тестване на модули на JavaScript с помощта на Jest Framework
- Как да тествате React Apps, използвайки Jest Framework
- Урок за рамка за жасмин, включващ жасминова жаба с примери
- Разпределени компилации: Конфигурация на Master Slave на Jenkins
- Техники за отстраняване на грешки в селен: точки на прекъсване, режим за отстраняване на грешки и др
- Урок за тестване на конфигурация с примери
- Как да настроите рамката за тестване на Node.js: Урок за Node.js
- 25 най-добри рамки за тестване на Java и инструменти за тестване за автоматизация (част 3)