Найкращий спосіб пояснити - показати на прикладі. Відкрийте цей гіст і давайте його розберемо
1. Створюємо об'єкт API який буде відповідати за комунікацію із зовнішнім світом і кладемо цей об'єкт в контекст за допомогою
createContext2. В довільному компоненті витягуємо об'єкт API з контексту і використовуємо його.
Поки все зрозуміло, правда? Та "магія" починається далі.
3. В нашому тесті, ми створюємо новий об'єкт API який буде більш підходящий для тестування - він не ходить в мережу, а просто повертає проміс з гарантованим результатом. Далі, ми огортаємо компонент який бажаємо протестувати в
ApiContext.Provider, а в value - підсовуємо йому нашу фейкову реалізацію. Коли React рендерить наш тестовий компонент, він знаходить наш провайдер і замість справжньої реалізації бере нашу нову, фейкову яку і використовує. Так ми можемо протестувати будь-які дані та симулювати будь-які помилки. Спробуйте, наприклад, замість Promise.resolve передати Promise.reject і побачите що станеться з цим компонентом якщо, наприклад не буде інтернету)
Питаннячка?)
П.М. Доречі, код робочий можете спробувати, треба тільки vitest доналаштувати для тестів
Бережіть себе, допомагайте ЗСУ,
@reactbeginners