จากคำถามจากกลุ่มใน facebook :: ReactJS Developer Thailand
เรื่อง การจัดโครงสร้าง folder ของ test ใน Jest สำหรับ React
ว่าควรเป็นอย่างไรดี ?
จากสำหรับ React ที่สร้างด้วย Create React App
จะทำการสร้าง test ไว้ที่เดียวกับ production code ให้เลย
ซึ่งไม่แปลกอะไรหรือจะเปลี่ยนใหม่ตามใจเราก็ได้
สำหรับระบบอื่น ๆ ที่พัฒนาด้วยภาษา JavaScript
ทั้งฝั่ง Frontend และ Backend แล้วควรจะต้องเป็นแบบไหนละ ?
ในเอกสารของ Jest ก็บอกเพียงว่า
ขอให้ชื่อ file หรือ folder ตามที่กำหนดไว้ก็พอแล้ว
ที่เหลือก็แล้วแต่เราจะใช้งาน
หรือสามารถเปลี่ยน naming convention ใหม่ตามใจเราได้อีก
แต่ถ้าทีมไม่กำหนดโครงสร้างกันไว้ก่อน
คิดว่าน่าจะมั่วดังนั้นเรามากำหนดกันหน่อยดีไหม ?
ยกตัวอย่างจากที่ผมทำและเห็นบ่อย ๆ
มักจะทำดังนี้
- แยก test ไปไว้ใน folder tests หรือ __tests__ กันไปเลย
- เขียน test ไว้ที่เกียวกับ production code ไปเลย อาจจะมี suffix ด้วย tests หรือ specs ก็ว่าไป
แต่เพื่อความสนุกสนานในการเขียน test เพิ่มขึ้น
ก็มักจะแยกตาม level ของ test ใน folder tests เข้าไปอีก ยกตัวอย่างเช่น
- unit test
- integration test
- component test
- end-to-end test
หรือบางคนอาจจะใส่ test level ในชื่อไฟล์ไปอีกด้วย
เช่น index.unit.tests.js เป็นต้น
แต่เคยทำแล้ว มันแปลก ๆ ยังไงก็ไม่รู้
แต่ก็เป็นอีกทางเลือกนะ
จะเห็นได้ว่า เรื่องของโครงสร้างของ test มีหลากหลายรูปแบบมาก ๆ
นั่นหมายความว่า
วันนี้คุณอาจจะมีรูปแบบหนึ่งแต่เมื่อเวลาผ่านไป
คุณอ่านจะพบวิธีการที่ดีกว่า หรือ เหมาะสมกว่าก็เป็นไปได้
ถ้าเรากลับมาคุย มา review และ refactor กันบ่อย ๆ
เรื่องของโครงสร้าง จำเป็นต้องมีการปรับปรุงให้เหมาะสมเสมอ