ในการทดสอบระดับ integration กับ Database ต่าง ๆ นั้น
บ่อยครั้งการจะทำการจำลองหรือ mock database
ทั้งผ่าน interface หรืออาจจะใช้งาน SQLMock ก็ได้
หรือบางคนใช้งาน Docker อยู่แล้ว
ก็เขียน script หรือ Make file มาใช้งาน
แต่เจอว่า มี package ชื่อว่า Dockertest
มาช่วยให้การทดสอบกับ database ผ่าน Docker container ได้สะดวกขึ้น
มาลองทำความรู้จักกันหน่อย
Dockertest เป็น package เล็ก ๆ
ที่ช่วยให้เราสามารถสร้างและลบ Docker container ด้วย code ได้เลย
เช่นการสร้าง Database container ต่าง ๆ ขึ้นมา
ก่อนที่จะทำการทดสอบตาม test case และ test scenario ที่ต้องการ
การใช้งานก็ไม่ยาก เขียนใน test ได้เลย
โดยแยกส่วนการทำงานนิดหน่อย
- ทำการ initial database ผ่าน TestMain สำหรับการ setup และ teardown ของแต่ละ test case
- เขียน test case เพื่อใช้งาน
ขั้นตอนที่ 1 ทำการ initial container ก่อน
[gist id="55d5d2e5b91a091337dcf55b1226004a" file="1.go"]ขั้นตอนที่ 2 ทำการทดสอบกับ container
[gist id="55d5d2e5b91a091337dcf55b1226004a" file="2.go"]เพียงเท่านี้ก็สามารถทดสอบระบบงานบน Docker container แบบง่าย ๆ ได้แล้ว
ใช้ resource เยอะตาม Docker นั่นเอง
เป็นอีกทางเลือกที่น่าสนใจ
มีแนวคิดคล้าย ๆ กันที่เคยแนะนำไปแล้วคือ Testing with testcontainer