![]()
![]()
มีคำถามเกี่ยวกับจากการแบ่งปันเรื่อง TDD with Golang ที่เชียงใหม่
ดังนี้
![]()
จึงนำมาเขียนอธิบายไว้ใน blog นิดหน่อย
เพื่อทำให้เข้าใจมากยิ่งขึ้น
มาเริ่มกันเลย
สิ่งที่ต้องการคือ ทำการสร้าง function สำหรับดึงข้อมูลจาก API มาเพื่อนำมาทำงานต่อ
เป้าหมายที่ต้องการคือ ต้องสามารถทดสอบได้ด้วย
โดยไม่จำเป็นต้องเรียกใช้ API ผ่านระบบ network
เริ่มด้วย code ที่เขียนมานั้น ต้องง่ายต่อการทดสอบด้วย
นั่นคือ นำ
interface มาใช้งานนั่นเอง
ดังตัวอย่าง
[gist id="0c41c372efa84d2562b3f07a43d51c80" file="api.go"]
คำอธิบาย
ทำการสร้าง interface ชื่อว่า Counter
ซึ่งมี method ชื่อว่า count() สำหรับดึงข้อมูล
สิ่งที่สำคัญคือ การทำงานอยู่ใน method myProcess()
ซึ่งมี argument 1 ตัวคือ interface Counter นั่นเอง
ทำให้เราสามารถส่งอะไรก็ได้ ที่มีหน้าตาเหมือนกับ interface Counter
โดยทำให้ code ทดสอบได้ง่ายดังนี้
[gist id="0c41c372efa84d2562b3f07a43d51c80" file="api_test.go"]
และยังสามารถทดสอบใน case error ได้อีกด้วย ดังนี้
[gist id="0c41c372efa84d2562b3f07a43d51c80" file="api_test02.go"]
เพียงเท่านี้ก็ทำให้เราสามารถสร้าง code ที่ทดสอบได้ง่ายขึ้นแล้วครับ