จากกลุ่ม Golang Thailand มีคำถามเกี่ยวกับการทดสอบ
ระบบงานที่พัฒนาด้วยภาษา Go
โดยในคำถาม จากที่เข้าใจเป็นดังนี้

  • ระบบงานพัฒนาด้วย Gin web framework
  • ทำการ post data ด้วย Form data
  • ต้องการทดสอบผ่าน Test mode ของ Gin + HttpTest

แต่จาก code ตัวอย่างที่ทางผู้ post ได้ใส่ link มา
ซึ่ง code นั้นจะ run ไม่ได้
จึงลองเอามาลองเขียน code เพิ่มเติมนิดหน่อย
เพื่อให้ compile และ run ได้

ผลที่ได้คือ

  • ทางผู้เขียนน่าจะเข้าใจผิด เพราะว่า code ที่พัฒนานั้น เป็นการรับค่าจากการ POST ผ่านการ submit form
  • ส่วนในการ testing นั้น ทำการ POST ด้วย JSON body
  • ทำให้การทดสอบไม่ผ่าน

การทดลองขั้นพื้นฐาน ก็ทำแบบ integration test ผ่าน API testing ด้วย Postman

เพื่อทำให้เข้าใจก่อนว่า code จริง ๆ ทำงานอย่างไรกันแน่ !!

แสดงดังรูป

จากนั้นจึงลงมือเขียนการทดสอบใน test mode ของ gin
ร่วมกับการทดสอบด้วย package net/http/httptest
ซึ่งแก้ไขนิดเดียว คือ ข้อมูลที่ส่งไปนั่นเอง
โดยเปลี่ยนเป็น key=value ที่ submit form นั่นเอง
ดังนี้

เพียงเท่านี้ก็ได้แล้ว
ส่วนการส่ง JSON ก็ดูเพิ่มเติมได้ใน GitHub::Up1 ได้
น่าจะพอมีประโยชน์นะครับ