ทดสอบ http ด้วย http recorder

จากบทความ สร้าง webservice ด้วย net/http คราวนี้คนที่ทำ TDD หรือ automated test จะตั้งคำถามว่า “แล้วเราทำทดสอบมันยังไง” Go มีชุดทดสอบสองทางเลือกครับ

  1. ทดสอบด้วย http response recorder
  2. ทดสอบด้วยการตั้ง server จำลองขึ้นมา

ในบทความนี้เราจะมาลองทดสอบด้วย http response recorder กัน

ก่อนอื่น http response recorder คืออะไรล่ะ?

http response recorder จะเป็นชุดทดสอบสำหรับการทดสอบ response ที่ออกมาโดยที่ input คือการส่ง request เข้าไปนั้นเอง

ใน Go มี built-in มาให้โดยอยู่ใน net/http/httptest การเขียนจะเป็นแบบนี้

และนำโค้ดจากบทความที่แล้วมาปรับเพราะว่าหากนำ function ไว้ใน http.HandleFunc เราจะไม่สามารถทดสอบได้ต้อง extract ออกมาเป็น function ซึ่งในที่นี้ชื่อว่า helloHandler

สังเกตว่า

  1. สร้าง response recorder และ request ขึ้นมา
  2. นำ response recorder และ request ใส่เข้าไปใน function helloHandler
  3. validate ค่าที่ได้หลังจาก call helloHandler ว่าได้กลับมาอย่างที่ควรจะเป็นหรือไม่

ขั้นตอนการทำมีเพียงเท่านี้ครับ สำหรับ http response recorder บทความต่อไปเดี๋ยวเรามารู้จักกับ test server กันครับ :)