จากคำถามจากกลุ่มใน 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 กันบ่อย ๆ

เรื่องของโครงสร้าง จำเป็นต้องมีการปรับปรุงให้เหมาะสมเสมอ