CCA Prep

Урок 7.1Урок 24 з 24

Ефективні юніт-тести

With a block of code and the associated Unit Test, determine where the test is ineffective and modify it to make it more effective.

Ефективні юніт-тестиНеефективний тестПеревіряє лише, що результат truthyЗалежить від іншого тесту або відчасуПеревіряє стаб або приватне полеНе чекає на асинхронну перевіркуЕфективний тестПеревіряє точне очікуване значенняСам готує свої фіксовані даніПідміняє стабами лише залежностіПовертає проміс або чекає на нього

Головне

  1. 1Хороший тест падає, коли ламається поведінка. Перевіряйте точне очікуване значення, а не лише те, що результат truthy або що помилки не було.
  2. 2Кожен тест сам готує свої дані. Тест, який проходить лише після того, як виконався інший тест, не ізольований.
  3. 3Підставляйте замість годинника, випадкових чисел і мережі значення, які ви контролюєте, щоб результат був однаковим за кожного запуску.
  4. 4Підміняйте залежності стабами або стежте за ними шпигунами, але ніколи не робіть цього з тестованим кодом. Перевіряйте результати й вихідні виклики, а не приватні поля.
  5. 5Асинхронний тест має дочекатися своїх перевірок: поверніть проміс або дочекайтеся його через await — це стосується й assert.rejects.
Що перевіряє іспит із цієї теми

Формулювання з програми іспиту (англійською).

  • 7.1.K1What makes a unit test effective: isolated, deterministic, one behaviour, meaningful assertions
  • 7.1.K2Test doubles: stubs, spies and mocks; testing asynchronous code
  • 7.1.S1Find why a given test passes without proving the behaviour, and fix it

Закріпіть тему

Дайте відповідь на запитання за сценаріями з цієї теми. До кожного варіанта є розбір.

Тренування 7.1 · 12 запитань