Як перевірити реагування та програми

Sep 10, 2025
Як
Test React
(Зображення кредиту: майбутнє)

Якщо ви хочете знати, як випробувати реагування, ви знаходитесь у правильному місці. Ви дійсно знаєте, що ваш код робить те, що він повинен робити? Ви перевірили його в браузері? Що робити, якщо у вас немає, або ви не можете перевірити все, і він розбивається у виробництві?

Тестувальна бібліотека - це група розробників утилітів, які використовують для написання окремих тестів на компоненти додатків. Деякі принципові частини тесту є:

  • Опис: описує те, про тест
  • Використання / рендеринг: використовує компонент у середовищі, де його можна перевірити
  • Насмішка: створює функції прикидатися, щоб ви могли перевірити свої припущення

Протягом цієї статті я збираюся вивчити деякі приклади з бібліотеки тестування реагування, щоб допомогти вам розпочати роботу з цим цінним способом покращення надійності вашого коду, а також забезпечення вашого коду не кидає будь-які неприємні сюрпризи, як тільки воно займається виробництвом.

Хочете більше корисних ресурсів? Ось кращий Інструменти для веб-дизайну навколо, що допоможе вам працювати розумніші. Або якщо вам потрібна нова машина, спробуйте цей обіг Кращі ноутбуки для програмування . Або якщо ви створюєте новий сайт, вам може знадобитися велика Веб-будівельник .

01. Початок роботи з бібліотекою тестування реагування

Я збираюся використовувати програму Create-Regre-App для цієї демонстрації, оскільки вона вже виникає попередня за допомогою бібліотеки тестування. Якщо ви використовуєте GATSBY або спеціальну установку, може бути певна конфігурація, яку потрібно виконати, перш ніж почати використовувати бібліотеку тестування.

Почати, давайте створимо нову програму. Якщо ви вже маєте останню версію Node.js, ви можете запустити наступну команду, не встановлюючи нічого іншого глобально:

npx create-react-app netmag-javascript-testing

02. Вирішіть, що тестування

Уявіть, що у нас є простий компонент, скажіть кнопку з певною державою. Які деякі речі, які потребують тестування в компоненті, як це?

Поява компонента:

Ми не хочемо нічого змінити несподівано після того, як ми написали наш компонент. Таким чином, ми збираємося написати тест знімків, щоб захопити, як це робить. Потім, якщо щось змінюється, ми побачимо це швидко без ручного або візуального тесту. Це відмінно підходить для компонентів, які складаються з багатьох менших компонентів: ви можете швидко побачити, коли (і де) його виникнення.

Різні гілки, які надають:

Оскільки ми могли б мати два або більше різних виводів, нам потрібно перевірити, що він правильно надає всі вони, а не тільки один з них. Таким чином, нам потрібно імітувати подію клацання та мати інший тест знімків для того, як він робить, після того, як ця галузь коду була запущена.

Що функції називаються як очікувалося:

Ми хочемо, щоб код, який ми писали, щоб зателефонувати іншу функцію, як ми припускаємо, що це буде. Але оскільки ця функція є зовнішньою залежністю, ми не хочемо тестувати тут. Наші тести повинні інкапсулювати лише функціональність, яку ми хочемо.

03. Напишіть свій перший тест

Test React

(Зображення: © Ben Read)

Давайте написати наш перший тест. Створіть новий файл під назвою Mycomponent.unit.test.js У тій же папці, як компонент. Додаючи TEST.JS в кінці, це буде автоматично підібрано бібліотекою тестування. Вміст цього файлу нижче:

 Імпорт реагування з "Реагую"
Імпорт {render} від '@ testing-library / reach'
Імпорт MyComponent від "./mycomponent"
описують ('& lt; mycomponent / & gt;', () = & gt; {
    // Тести йдуть тут
}) 

Перше, що я хочу звернути вашу увагу, це Опишіть () Функція, яка бере два аргументи: перший - це рядок, який ви можете використовувати для кращого опису - як рядок тексту - який ваш тест буде робити. У нашому випадку ми просто сказали, що це має зробити. Це дуже корисно, коли хтось інший дивиться на ваш код, або ви повинні пам'ятати, що ви зробили на більш пізньому етапі. Написання хороших опису заяв є формою кодової документації та іншої вагової причини для написання тестів.

Другий аргумент - це ваші тести. Точний Опишіть () Функція буде працювати всі ці тести один за одним.

04. Використовуйте функцію очищення

Давайте запровадимо помітну функцію перед () . Ми повинні використовувати це, тому що кожен раз, коли ми щось робимо з компонентом, ми хочемо, щоб свіжа копія без реквізитів, яку ми раніше передали до нього, як і раніше, існує в компоненті. Або нам, можливо, доведеться повторно надавати компонент: перед () Це для нас, і ми можемо передати його функцією очищення.

 Імпорт {Render, Cleanup} з "Тестування-бібліотека" @
...
Опишіть ("компонент повинен рендефонувати", () = & GT; {
  перед (очищення)
} 

05. Напишіть тест з знімка

Test React

(Зображення: © Ben Read)

На цьому кроці ми збираємося "монтувати" наш компонент (або зробити це).

 Опишіть ("Компонент повинен рендефонувати", () = & GT; {
  перед (очищення)
  це ("надає основні реквізиції", () = & GT; {
    рендеринг (& lt; mycomponent / & gt;)
  })
} 

Цей рендеринг дає нам доступ до всіх наданих властивостей складового компонента. Може бути добре, щоб кинути це в console.log () Таким чином, ви можете побачити більш чітко, що це робить.
Якщо ви це зробите, ви побачите, що є кілька корисних властивостей, які ми можемо скористатися тут. Я збираюся зробити твердження (зробити тестувати декларацію) і перевірити його, витягнувши контейнер. Контейнер містить "вузли DOM (весь HTML), пов'язаний з компонентом.

 Це ("надає основні реквізиції", () = & GT; {
    const {container} = render (& lt; mycomponent / & gt;)
}) 

Тепер у нас є доступ до контейнера, як я можу сказати, що це дано відповідно до мого твердження? Додаючи тест з знімка.

Подумайте про знімок як фотографію. Він приймає знімок нашого компонента в певний момент часу. Тоді, коли ми внесемо зміни до коду, ми можемо побачити, чи він все ще відповідає оригінальному знімку. Якщо це так, ми можемо бути впевненими, що ніщо не змінилося в компоненті. Однак, якщо це не так, ми могли б розкрити проблему, яка виникла в іншому компоненті, тому ми, можливо, раніше не помітили:

06. Тестові властивості

Реквізити, властивості, компонента можуть бути перевірені з знімками. Тестування різних реквізитів, які ви надаєте вашому компоненту, дасть вам більшу охоплення та впевненість. Ви ніколи не знаєте, коли вимога буде означати реквізити вашого компоненту, а остаточний вихід буде змінюватися.

Додайте наступний об'єкт у верхній частині вашого файлу:

 Const LightProperties = {{
    backgroundcolour: 'White',
    textcolour: 'darkblue'
} 

Ми визначаємо властивості у об'єкті, а потім використовують оператор розповсюдження (три точки, що йдуть на ім'я об'єкта: ... Lightproperties) Тому що ми можемо лише пройти один аргумент, коли ми робимо цей шлях. Це також корисно бачити, які властивості ви проходять окремо:

 Це ("надає основні реквізиції", () = & GT; {
        const {container} = render (& lt; mycomponent / & gt;
      )
     очікувати (контейнер) .tomatchsnapshot ()
    })
    це ("надає світильнику", () = & GT; {
        const {container} = render (
            & lt; mycomponent {... lightproperties} / & gt;
        )
        очікувати (контейнер) .tomatchsnapshot ()
    })

07. Тестові зміни в інтерфейсі UI

Уявіть собі, що наш компонент має кнопку, і ви хочете переконатися, що щось відбувається, коли кнопка натискається. Ви можете подумати, що ви хочете перевірити стан заявки; Наприклад, ви можете спокусити тестування, що держава оновлювалася. Однак це не об'єкт цих тестів.

Це вводить нас до важливої ​​концепції у використанні бібліотеки тестування: ми не тут, щоб перевірити стан або спосіб нашого компоненту. Ми тут, щоб перевірити, як люди збираються використовувати компонент, і це відповідає їхнім очікуванням.

Так що держава оновлюється, є нематеріальним; Те, що ми хочемо випробувати, - це результат цієї кнопки.

Давайте уявіть, що ми перевіряємо результат функції, яка змінює інтерфейс з темного режиму до режиму світла. Ось компонент:

 const modetoggle = () = & gt; {
    Const [Режим, SetMode] = Usestate ['Light']
   const toggletheme = () = & gt; {
     Якщо (тема === 'світло') {
       settheme ('dark')
     } else {
       SETTHEME ('LIGHT')
     }
   }
    повернення ("
        & lt; togglebutton data-testid = "режим-перемикання" lightmode = {Режим} onclick = {togglemode} & gt;
          Режим перемикання
        & lt; / togglebutton & gt;
    )
}

По-перше, ми повинні додати ідентифікатор тесту на кнопку, щоб ми могли знайти його на етапі рендерингу:

 Повернення (
    & lt; togglebutton
      data-testid = "Режим-перемикання"
      LightMode = {Режим}
      onclick = {togglemode}
     & gt;
      Режим перемикання
    & lt; / togglebutton & gt;

Ви помітили, що ми додали новий атрибут Дані-тестіда до кнопки? Ось як ви можете перевірити це. По-перше, імпортуйте нову функцію, Fireevent від бібліотеки тестування:

 Імпортувати {очищення,
          firevent,
          віддавати
} Від '@ тестування-бібліотека / реагування

Ми можемо використовувати цю функцію для тестування, що існують зміни в інтерфейсі UI, і ці зміни відповідають:

 Це ("надає основні реквізиції", () = & GT; {
    const {container} = render (& lt; togglebutton / & gt;
  )
 очікувати (контейнер) .tomatchsnapshot ()
})
це ("робить світло-інтерфейс, натиснувши", () = & GT; {
    const {container, getbytestid} = render (& lt; togglebutton / & gt;)
    fireevent.click (getbytestid ('mode-toggle'))
    очікувати (контейнер) .tomatchsnapshot ()
}) 

Це чудово: ми не повинні вручну йти на сайт і озирнутися, а потім натисніть кнопку і подивіться на другий раз - під час якого ви можете визнати, ви, швидше за все, забудете чи пропустити щось! Тепер ми можемо впевнено, що, з урахуванням того ж введення, ми можемо очікувати таку ж випуск у нашому компоненті.

Коли мова йде про тестування ідентифікаторів, я особисто не люблю користуватися Дані-тестіда знайти щось у домі. Врешті-решт, об'єкт випробувань є імітувати, що робить користувач, і тестування, що відбувається, коли вони роблять. Дані-тестіда Відчуває себе трохи чит - хоча Data-teppings, швидше за все, вживаються для вашого інженера "QA" (див. Фарбує роль інженерів з забезпечення якості).

Замість цього ми могли б використовувати getbytext () і пройти в текст нашої кнопки. Цей метод буде набагато більше конкретної поведінки.

08. Макет і шпигун функція

Іноді нам, можливо, доведеться перевірити виклик до функції, але ця функція знаходиться поза обсягом тесту. Наприклад, у мене є окремий модуль, який містить функцію, яка обчислює значення ПІ до певної кількості десятків.

Мені не потрібно перевіряти, що є результатом цього модуля. Мені потрібно перевірити, що моя функція робить як очікувалося. Щоб отримати додаткові відомості про те, чому це, будь ласка, перегляньте тестування коробки та інтеграції. У цьому випадку ми могли "висміювати" цю функцію:

 const getpivalue = jest.fn ()
це ("називає функцію", () = & GT; {
    const {container, getbytestid} = render (& lt; togglebutton / & gt;)
    fireevent.click (getbytestid ('mode-toggle'))
    очікувати (getpivalue) .tohavebencalledtimes (1)
  )
}) 

Функція tohavebencalledtimes () є однією з багатьох допоміжних функцій у бібліотеці тестування, яка дозволяє нам

для перевірки виходу функцій. Це дозволяє нам не тільки масштабувати наші тести лише до модуля, який ми хочемо випробувати, але також означає, що ми можемо "шпигун" або побачити, яка наша функція робить, коли він викликає цю функцію.

09. Початок тестування реагування додатків

Test React

(Зображення: © Бібліотека тестування реагування)

Тести написання може здатися трохи складним, щоб почати. Я сподіваюся, що цей підручник дав вам трохи більше довіри. Оскільки я почав писати тести для моїх додатків, я дійсно не можу повернутися: я можу легше відпочивати, знаючи, що я залишаю за набагато кращою спадщиною для тих, хто буде використовувати свою роботу в майбутньому.

Для отримання додаткових уявлень про те, як перевірити свої компоненти, відвідайте Бібліотека тестування реагування або Приклади тестування реагування . Якщо ви шукаєте деякі курси, щоб допомогти вам розпочати роботу, один за допомогою kent c dodds (Хто написав і підтримує бібліотеку тестування реагування). Я також користувався це на підручниках Це той, хто отримав мене, почав писати тести для мого коду.

Пам'ятайте, якщо ви створюєте складний сайт, ви захочете отримати веб хостинг Обслуговування. І якщо цей сайт може містити багато активів, зберігаючи їх надійним хмара зберігання має вирішальне значення.

Цей вміст спочатку з'явився чистий журнал . Читати далі Веб-дизайн Статті Тут .

Читати далі:

  • HTML6: Що це таке, і коли це прибуде?
  • Напишіть HTML-код швидше
  • Дизайн мобільного додатка: Посібник для початківців

Як - Найпопулярніші статті

Adobe XD: Як використовувати автоматичну функцію

Як Sep 10, 2025

(Зображення кредиту: Adobe) Незважаючи на те, що його пізній запис у..


Що знаходиться всередині кута 8?

Як Sep 10, 2025

(Зображення кредиту: майбутнє) Кутова 8 - це найновіша версія кут�..


Початок роботи з Express.js

Як Sep 10, 2025

Створення додатків, що стосуються браузера з Node.JS. Express.js є ..


Покращити свої концептуальні навички мистецтва в Photoshop

Як Sep 10, 2025

Для цього семінару, я хотів би показати вам дуже веселий спосіб, щоб ес�..


4 Поради щодо оптимізації зображень

Як Sep 10, 2025

Кілька щасливих розробників, і цей автор мав можливість TECH EDSED EDDY OSMANI н�..


Побудувати масштабовані відповідні компоненти

Як Sep 10, 2025

Всякий раз, коли ми говоримо про будівництво ремонту та масштабованих ..


Як малювати вигнуте скло на космічний шолом

Як Sep 10, 2025

Корабель - це весело, щоб фарбувати, але частина шолома може бути склад�..


Як взяти свій векторний логотип від 2D до 3D

Як Sep 10, 2025

У цьому підручнику ми дивимося, як ви можете взяти векторний векторний..


Категорії