чернетка

на комерції тести переважно не пишуть

тестові програми можуть бути довші ніж сам код

-------

напишемо код програми перевірки , яка перевірятиме фомат символів імені юзера.

в 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://ejs.co/

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