чернетка
на комерції тести переважно не пишуть
тестові програми можуть бути довші ніж сам код
-------
напишемо код програми перевірки , яка перевірятиме фомат символів імені юзера.
в utils створимо userNamesHandler.js
/**
* User name handler function.
* @param {string} name - user name
* @returns {string}
*/
module.exports = (name) => {
if (typeof name !== 'string') return '';
const handledUserNameArray = name
.normalize('NFD')
.replace(/\p{Diacritic}/gu, '')
.toLowerCase()
.replace(/[^a-z]/g, ' ')
.split(' ');
const resultArray = [];
for (const item of handledUserNameArray) {
if (item) resultArray.push(item.charAt(0).toUpperCase() + item.slice(1));
}
return resultArray.join(' ');
};В коді вище отримується рялок, замінюються діакратичні символи, а також літери всі символи крім латинки після цього розбивається на масив по пробілу.
укінці збільшуємо перший символ, і обїєднуємо масив в рядок через пробіл.
тепер в userServices.js в функції signupUser допишемо такий код.
тепер при створенні контакта через постмен. нам будуть виправлятися оці неправильні внесені дані
Але нам треба потестити цю функцію.
ставимо пакети в режимі розробника
впекедж джсон ставимо скрипт на тес
А в папці, де лежить наш код для перевірки (тобто в утілс) створимо папку __test__
ці файди не будуть застосовані в застосунку, а тільки для тестів використовуватися
і за таким само форматом всередині створимо файл userNamesHandler.test.js.
створимо програмку для тестування для перевірки роботи (окремий юніт тест)
тут describe - приймає назву тесту і колбек функцію. а в ній команду test (замість test можна писати it("should", ()=>{})), яка першим параметром приймає назву тесту, а другим також кодбек функцію, в якій вписуємо expect (тобто шо робимо) і toBe (тобто що маємо отримати)
щоб запустити тест потрібно в консолі запустити
перевіряємо результати тесту в консолі
тепрер напишемо теск кейс для нашого прикдалу перевірки логіна
можна задати масив кейсів і циклом пройтися перевірити всі кейси
аде також можна писати тес і окремо під кожен окремий кейс.
Тут ми перебираємо циклом варіанти і якщо хоч один тест не виконається, то в консолі буде помилка
Тепер напишемо тест на цілий роут логіна
спочатку в індекс файлі експортнемо наз запуск сервера
Відповідно у папці контролерів створюємо папку __test__ і в ній файл який будемо тестувати authController.test.js
розберемо той код. спочатку підключення імітатора запитів, а потім імпорт підключення самого сервера
beforeAll, beforeEach, afterEach, afterAll - це хуки в які можна прописувати різний функціонал
при запуску тесту перевірятимуться всі умови тесту
ТЕМПЛЕЙТ ДВІЖКИ (ЩАБЛОНІЗАТОРИ)
приклад шаблонізатора
https://pugjs.org/api/getting-started.html
Розглянемо на прикладі паг
підключаються по-ріщному
можна в індекс фпйлі його підключити перед пілключенням до бази даних
перший рядок підключення паг
другий рядок вказання папки де лежатимуть темплейти
відтак в корені кадалога створимо папку views
а в ньому підпапку layouts а вде у ній файл main.pug
Зашоблонізуємо в ньому html-файл
І цьому випадку закриваючі теги не потрібні, а вкладеність визначається табудяцією. стидізацію там де цсс будемо брати зі статікс, який ми щаримо назовні для всіх користувачів
у шаблонізаторах можна передавати змінні
подивимося яуий вигляд матиме файл main.pug
можна використати плагін для vc beautify pug. він правиль чистить пробіли зайві і виставляє коректно табуляцію.
створимо додатково два файли home.pug і todos.pug
тут вказуємо що будемо вставляти дані в layouts/main а нижче вказуємо назва блоку і сам контент
примітно, що якшо зочемо передати змінну то ставимо дорівн.є, а інакше це буде передаватися текст
Шаблони творені і тепер їх треба роздати . завдяки окремим роутам. а підключаємо в індекс файлі де всі роути
тепер пропишемо сам роут (ці роути будуть просто передавати на фронт шаблони з певними даними)
також напищемо контролер
По суті це інструкція як з бекенду роздати фронтенд
щоб перевірити треба запустити сервер і пройти на http://localhost:3000/
але видалити раніще створений index.html або перейменувати його. і нам підвантажиться уся наща прописана логіка
Утім в індекс файлі може дублюватися і тому в рядках роуту в індекс пишуть rest-api в роутах, зоб не було збігів з тими роутами які ми роздаємо на зовні через браузер
на фронті після створення реакту це вже використовується досить рідко. переважно використовують для імейлів
Last updated