ลองทำ Test ด้วย react-testing-library

Jidapa Pattanang
THE EXISTING COMPANY
2 min readMar 20, 2020

ลองเปิดใจเขียน Test กันเถอะ ✌🏻

เมื่อไม่นานมานี้ได้ลองใช้ react-testing-library ในการเขียน test ดูเลยอยากมาแชร์การใช้งานโดยมีฟีเจอร์ง่าย ๆ มาให้เทสต์ไปด้วยกัน

react-testing-library คืออะไร 🤔

เป็น libray ที่ใช้ในการทำทดสอบในส่วนของ React Component โดยจะทำงานร่วมกับ Jest โดยเจ้า react-testing-library เนี่ยมันเตรียมพวกฟังก์ชันของ react-dom ต่าง ๆ ไว้ให้เราใช้หมดแล้ว ทำให้เราสามารถทดสอบพวกการ render ต่าง ๆ ได้เลยไม่ว่าจะเป็น label text เพื่อหา input field, การค้นหาข้อความเพื่อค้นหาปุ่ม รวมไปถึงการค้นหา element ด้วยการใช้ data-testid ก็สามารถทำได้

สิ่งที่จะทำ 👀

จะทดสอบส่วนการแสดงผลของการกรอกรหัสผ่าน ซึ่งเราจะทำการทดสอบการ render ว่า render ตรงตามเงื่อนไขที่เราต้องการหรือไม่

Requirement 💬

ต้องการทดลองการกรอกรหัสผ่าน โดยมีเงื่อนไข คือ

  • เมื่อยังไม่มีการกรอกอะไรเลย ให้รายการเงื่อนไขด้านล่างเป็นสี เทา
  • เมื่อเริ่มมีการกรอก ให้เริ่มตรวจสอบว่าตรงกับ Pattern หรือเปล่า ดังนี้
🍭มี 8-16 ตัวอักษร
🍭มีตัวพิมพ์ใหญ่อย่างน้อย 1 ตัว
🍭มีเลขอย่างน้อย 1 ตัว
🍭ห้ามมีช่องว่าง
  • เมื่อตรวจสอบแล้วตรงกับ Pattern ให้ตัวหนังสือเปลี่ยนเป็นสี เขียว
  • เมื่อตรวจสอบแล้วผิด Pattern ให้ตัวหนังสือเปลี่ยนเป็นสี แดง
  • เมื่อพิมพ์แล้วลบออกทั้งหมดทำให้ช่อง Input ว่างเปล่าให้แสดงข้อความว่า This field is required. และเปลี่ยนสีของเงื่อนไขด้านล่างเป็นสี default คือสี เทา

Tools ที่ใช้ 🔧

  1. สร้าง Project ด้วยการใช้ create-react-app
  2. ติดตั้ง react testing library
npm install --save-dev @testing-library/dom @testing-library/react

ลงมือทำ 👩🏻‍💻

App.js

App.test.js

ขอหยิบมาอธิบายสัก 1 Case 🧏🏻‍♀️

สำหรับ Case นี้จะทดสอบว่า เมื่อกรอกรหัสผ่านที่ Input Field ด้วย data แล้ว

จะไปค้นหาข้อความ “8–16 Characters.” ใน App Conponent

แล้วตรวจสอบว่าข้อความนั้นน่ะ มี style เป็นสีแดงหรือไม่

มาลอง Run Test กัน🕵🏻‍♂️

ด้วยคำสั่ง

npm run test

จะได้ผลลัพธ์ออกมาแบบนี้

Source Code 💻

ดู source code เต็มได้ที่ 👇🏻

Conclusion

สำหรับคนที่เริ่มเขียนเทสต์แบบเรา ตอนแรกที่เราเริ่มลองทำยอมรับว่ายากมากเหมือนกันที่จะเริ่มต้น เพราะในหัวจะมีแต่คำว่า

ถ้าไม่มีเทสต์เนี่ยคงเสร็จไปนานละ

แต่อย่าลืมว่าถ้าเราไม่เขียนเทสต์ เราจะไม่รู้เลยว่า เมื่อนาน ๆ ไป เรามีการแก้ไข Code ของเรานั้นมันจะไปกระทบส่วนอื่นหรือเปล่า ซึ่งการเขียนเทสต์นี่แหละที่จะเข้ามาช่วยเตือนและบอกเราให้รู้ว่าการทำงานของ Code เรายังถูกต้องอยู่นะหลังจากแก้บางอย่างแล้ว

Reference 📚

--

--