Shu React component
@JonliChatBot-da online userlar sonini ko'rsatishga ishlatiladi.
Qanday qilib uni test qilishimiz mumkin?
Birinchi bo'lib hayolga kelgan narsa esa useEmitOnce vs useSocketValue mock qilish va render natijasini tekshirish.
Lekin bizga farqi bo'lmaslik kerak component useEmitOncedan foydalanvottimi, to'g'ridan to'g'ri `socket.emit`dan foydalanvottimi yoki boshqa usul bilan mi. Bu esa "implementation detail".
Agar biz implementationga testlarimizani bog'lab qo'ysak – componentning implementationi update qilnganingizda testingiz ham buziladi.
Bu yerda savol paydo bo'ladi: tetsingiz o'zi to'g'ri narsani test qilvottimi yoki shunchaki funksiyalar call qilinishini test qilvottimi?
Undan ko'ra componentning natijasini test qilishimiz kerak. Buning uchun
MSW yordamida WebSocket messagelarni intercept qilishimiz mumkin va funksiya darajada mock qilishi o'rniga – WebSocket protocol darajada mock qilishimiz mumkin.
Va
React Testing Library yordamida role-based testing yozamiz. React Testing Librarydan foydalanish ham implementationi test qilishdan bizni uzoqlashtiradi.
Shunaqa usul yordamida, keyinchalik socket.io-dan boshqa narsaga o'tsam – testlar buzilmaydi, chunki implementation test qilishi o'rniga, testlar natijani test qiladi.