8 React Testing Library และยูทิลิตี้สำหรับโครงการพัฒนาครั้งต่อไปของคุณ

เผยแพร่แล้ว: 2021-06-22

การทดสอบไม่ได้เพิ่มคุณสมบัติพิเศษใดๆ ให้กับแอปพลิเคชันของคุณ แต่ให้ความมั่นใจมากขึ้นในการจัดส่งแอปพลิเคชันของคุณไปยังเวอร์ชันที่ใช้งานจริง

ฉันคิดว่าคุณคุ้นเคยกับการทดสอบแล้ว และคุณมาที่นี่เพื่อทราบเกี่ยวกับไลบรารีการทดสอบสำหรับแอปพลิเคชัน React ของคุณ หากเป็นกรณีนี้แสดงว่าคุณมาถูกที่แล้ว ก่อนที่เราจะพิจารณาไลบรารีประเภทต่างๆ มาดูกันว่าการทดสอบส่งผลต่อคุณภาพแอปพลิเคชันและเวลาในการพัฒนาของคุณอย่างไร

ผลการทดสอบ

บางท่านอาจรู้สึกว่าการเขียนแบบทดสอบสำหรับการสมัครเป็นกระบวนการที่ต้องใช้เวลา ข้ามขั้นตอนนี้ไปก่อน ไม่ ไม่ใช่เรื่องเสียเวลาในการเขียนแบบทดสอบสำหรับการสมัครของคุณ

สมมติว่าคุณได้พัฒนาแอปพลิเคชันที่ไม่มีการทดสอบใดๆ มีฟังก์ชั่นการใช้งานมากกว่า 100 รายการ หลังจากผ่านไประยะหนึ่ง ให้พูดว่า 3 เดือน ลูกค้าของคุณต้องการให้คุณเพิ่มคุณสมบัติใหม่ 5 อย่าง และปรับแต่ง 2 คุณสมบัติจาก 100 คุณสมบัติที่คุณเคยพัฒนามาก่อน

คุณไม่มีปัญหาใดๆ กับมัน และดำเนินการทั้งหมดให้เสร็จสิ้นและส่งรหัสของคุณไปยังเวอร์ชันที่ใช้งานจริง (โดยไม่มีการทดสอบตามปกติ) หลังจากผ่านไปสองสามวัน ลูกค้าของคุณมาหาคุณอีกครั้งโดยแจ้งว่าฟีเจอร์เก่ากำลังจะล่ม และไม่เข้าใจว่าทำไม? คุณใช้เวลามากในการแก้ไขปัญหาอีกครั้ง หลังจากแก้ไขปัญหาเสร็จสิ้น คุณเริ่มสูญเสียความมั่นใจ

จะได้รับความมั่นใจนั้นได้อย่างไร?

เศร้า

และประหยัดเวลาพิเศษที่คุณใช้ในการแก้ไขปัญหา สิ่งหนึ่งที่จะทำทุกอย่างถูกต้อง นั่นคือ การทดสอบ

สมมติว่าคุณได้เขียนแบบทดสอบสำหรับการสมัครของคุณแล้ว คุณจะทำการทดสอบอีกครั้งเมื่อคุณได้พัฒนาคุณสมบัติใหม่หรือปรับแต่งคุณสมบัติเก่า ในกรณีนี้คุณจะได้ทราบปัญหาก่อนที่จะไปที่ตัวผลิตภัณฑ์เอง ช่วยประหยัดเวลาได้มากและทำให้คุณมั่นใจในคุณภาพของแอปพลิเคชันของคุณ

ถึงเวลาพิจารณาไลบรารีทดสอบต่างๆ สำหรับโปรเจ็กต์ React ถัดไปของคุณ

ห้องสมุดทดสอบ

ไลบรารีการทดสอบเป็นกลุ่มของแพ็คเกจที่ช่วยคุณทดสอบส่วนประกอบ UI เรามุ่งเน้นที่ React Testing Libray

ไลบรารีการทดสอบ react เป็นไลบรารีขนาดเล็กที่มีชุดยูทิลิตี้ที่สมบูรณ์สำหรับการทดสอบ React DOM ช่วยให้เราสามารถทดสอบ ส่วนประกอบตอบสนอง โดยไม่ต้องให้รายละเอียดการใช้งานห้องสมุด ช่วยให้เราได้รับความมั่นใจมากขึ้นโดยทำให้การทดสอบง่ายขึ้น

ส่วนใหญ่จะทำงานร่วมกับไลบรารีการทดสอบ Jest มีวิธีการและยูทิลิตี้ง่ายๆ สำหรับการทดสอบ และแนะนำเราให้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดในการทดสอบ

คุณลักษณะบางอย่างของไลบรารีการทดสอบปฏิกิริยาคือ:

  • ไม่สนใจการทดสอบสถานะภายในของส่วนประกอบ
  • การทดสอบผลการเรนเดอร์ของส่วนประกอบ
  • ทดสอบโหนด DOM แทนอินสแตนซ์ของคลาส
  • มีวิธีการที่กำหนดเองในการเข้าถึงองค์ประกอบ DOM ในไลบรารี
  • ตรวจสอบให้แน่ใจว่า UI ทำงานอย่างถูกต้อง
  • มีการสนับสนุนจากชุมชนขนาดใหญ่

Jest

Jest เป็นเฟรมเวิร์กการทดสอบเพื่อทดสอบโค้ด JavaScript และ TypeScript และรวมเข้ากับไลบรารีส่วนหน้าได้ดี มันถูกพัฒนาและดูแลโดย Facebook ทีมงาน React แนะนำสำหรับการทดสอบแอปพลิเคชัน React

มีการดาวน์โหลดมากกว่าไลบรารีทดสอบอื่น ๆ ทั้งหมด Jest พร้อมกับไลบรารีการทดสอบการโต้ตอบจะมีประสิทธิภาพมากขึ้นสำหรับการทดสอบ React และนักพัฒนาส่วนใหญ่ใช้ชุดค่าผสมนี้สำหรับการทดสอบ

คุณสมบัติบางอย่างของ Jest คือ:

  • การทดสอบถูกแยกออกจากกัน
  • มันให้ความคุ้มครองรหัส
  • มันเร็ว
  • เป็นวิธีการจำลองการทำงาน
  • มีข้อยกเว้นประเภทต่างๆ สำหรับการทดสอบ

เอนไซม์

เอนไซม์เป็นเครื่องมือทดสอบสำหรับการทดสอบส่วนประกอบที่ทำปฏิกิริยา มันช่วยให้เราสามารถสำรวจและจัดการองค์ประกอบ React ที่แสดงผลเอาต์พุตได้อย่างง่ายดาย มันถูกสร้างขึ้นโดย Airbnb

ต้องใช้กับตัวทดสอบอื่นๆ เช่น jest, mocha, jasmine เป็นต้น สำหรับการทดสอบส่วนประกอบ React มีวิธีเพิ่มเติมและง่ายในการเรนเดอร์และทดสอบส่วนประกอบ React และใช้งานได้กับไลบรารี React เท่านั้น

มอคค่า

Mocha เป็นกรอบการทดสอบที่ทำให้การทดสอบง่ายขึ้น มันทำงานบน NodeJS ตัวดำเนินการทดสอบทำงานร่วมกับไลบรารีการทดสอบอื่น ๆ สำหรับการทดสอบ React

คุณสมบัติบางอย่างของมอคค่าคือ:

  • จัดทำรายงานครอบคลุมการทดสอบ
  • กำหนดค่าได้อย่างสมบูรณ์ด้วยไฟล์ปรับแต่ง
  • รองรับการหมดเวลาการทดสอบ Async
  • หมดเวลาตามการทดสอบ
  • มันยังเน้นการทดสอบที่ช้าสำหรับคุณ

Mocha มีคุณสมบัติอื่น ๆ มากมายรอคุณอยู่ที่หน้าแรก

กรรม

กรรมคือสภาพแวดล้อมการทดสอบสำหรับแอปพลิเคชันของคุณ ซึ่งช่วยให้เราทำการทดสอบบนเบราว์เซอร์และอุปกรณ์จริง (มือถือ แท็บเล็ต และเดสก์ท็อป) มีจุดมุ่งหมายเพื่อให้สภาพแวดล้อมที่แตกต่างกันสำหรับนักพัฒนาสำหรับการทดสอบ

วิดีโอ YouTube

คุณสมบัติบางประการของกรรมคือ:

  • ทดสอบรหัสของคุณบนอุปกรณ์จริง
  • ช่วยให้เราสามารถทดสอบโค้ดของเราในสภาพแวดล้อมที่ไม่มีส่วนหัว เช่น PhantomJS
  • คุณสามารถรวม Karma กับเครื่องมือ CI/CD เช่น Jenkins , Travis และ Semaphore
  • คุณสามารถรวมเข้ากับเฟรมเวิร์กการทดสอบอื่นๆ เช่น Mocha , Jasmine ฯลฯ ได้อย่างง่ายดาย
  • การดีบักทำได้ง่ายด้วย IDE

จัสมิน

จัสมินเป็นเฟรมเวิร์กการทดสอบการพัฒนาตามพฤติกรรม (BDD) สำหรับ JavaScript ไม่ต้องใช้ DOM ในการทดสอบโค้ด จัสมินถูกออกแบบมาสำหรับการทดสอบโค้ด NodeJS เราสามารถทดสอบ React กับ Jasmine และไลบรารีทดสอบอื่นๆ

คุณสมบัติบางประการของจัสมินคือ:

  • มีไวยากรณ์ที่สะอาดและใช้งานง่ายสำหรับการเขียนแบบทดสอบ
  • เราสามารถเขียนการทดสอบทั้ง frontend และ backend
  • แกนกลางของดอกมะลิไม่มีการพึ่งพาใด ๆ ซึ่งทำให้รวดเร็ว

ชัย

Chaiis ห้องสมุดยืนยัน สามารถจับคู่กับไลบรารีทดสอบ JavaScript อื่นๆ ได้ Chai จัดเตรียมฟังก์ชันต่างๆ เช่น should , assert , และ ยกเว้น การยืนยัน

ไซเปรส

Cypress เป็นเฟรมเวิร์กการทดสอบแบบ end-to-end ของ JavaScript ซึ่งช่วยให้เราสามารถตั้งค่า เขียน เรียกใช้และดีบักการทดสอบในเบราว์เซอร์ มีแดชบอร์ดที่ให้รายงานโดยละเอียดเกี่ยวกับสถานะของการทดสอบแต่ละครั้งที่คุณเขียน

Cypress ทำการทดสอบในสภาพแวดล้อมเบราว์เซอร์จริงซึ่งช่วยให้คุณเข้าถึงเครื่องมือพัฒนาได้เช่นกัน ใช้เพื่อทดสอบโฟลว์ end-to-end ของฟีเจอร์ในแอปพลิเคชัน

คุณสมบัติบางอย่างของ Cypress คือ:

  • คุณสามารถดูภาพรวมของทุกขั้นตอน ใช้สแนปชอตของแต่ละขั้นตอนขณะทำการทดสอบ
  • ทำให้การดีบักง่ายขึ้นด้วย DevTools
  • Cypress จะรันการทดสอบซ้ำโดยอัตโนมัติเมื่อคุณทำการเปลี่ยนแปลงการทดสอบที่คล้ายกับคุณลักษณะ React แบบเรียลไทม์
  • การทดสอบจะรอผลลัพธ์โดยอัตโนมัติโดยไม่ต้องใช้คำสั่ง wait

บทสรุป

แบบทดสอบการเขียนเป็นสิ่งที่ดีสำหรับคุณและแอปพลิเคชัน มันทำให้สิ่งต่าง ๆ ง่ายในยามยาก อย่าหาข้ออ้างในนั้น ลำดับของไลบรารีทดสอบในบทความไม่มีความสำคัญใดๆ มันเป็นเพียงสำหรับการนับ ไม่มีห้องสมุดใดที่ต่ำกว่าที่อื่น ห้องสมุดแต่ละแห่งมีข้อดีและข้อเสียของตัวเอง

ส่วนใหญ่เราสามารถทดสอบคุณสมบัติที่สมบูรณ์ของแอปพลิเคชัน React โดยใช้ React Testing Library และ Jest และได้รับการแนะนำโดยสมาชิกชุมชน React ส่วนใหญ่ ไม่จำเป็นสำหรับคุณที่จะใช้ทั้งสอง หากคุณเป็นมือใหม่คุณสามารถลองดูได้ หากคุณกำลังมองหาบางสิ่งที่เฉพาะเจาะจงมากขึ้นสำหรับแอปพลิเคชัน React ของคุณ ให้ไปที่แต่ละไลบรารี

มีความสุขในการทดสอบ