จากการพูดคุยกับหลายทีม พบว่า
ปัญหาอย่างหนึ่งที่มักพบเจอคือ
การเชื่อมต่อกับระบบต่าง ๆ ผ่าน REST APIs
หรือแม้แต่การพัฒนาระบบเดียวกันที่ต้องแบ่งเป็น 2 ทีม คือ
- ทีม Frontend อาจจะเป็น Web หรือ Mobile ก็ได้
- ทีม Backend หรือ ทีม API
ก่อนที่จะไปหาเครื่องมือมาช่วยเหลือ ต้องเริ่มจากการคิด และ คุยรายละเอียด
ว่าในแต่ละ API เป็นอย่างไร เช่น- Endpoint ของ API
- Input ของ API เป็น GET/POST/PUT/DELETE
- Output ของ API
- รูปแบบข้อมูลเป็น XML หรือ JSON
1. ทำการติดตั้ง
เพียงแค่ download และนำมาติดตั้งไปที่ Servlet Container หรือ run แบบ Standalone ก็ได้ โดยผมจะใช้การ run แบบ Standalone เพื่อความง่าย ให้ทำการ download ไฟล์ JAR จาก WireMock Standalone จากนั้นทำการ run ด้วยคำสั่ง [code]$java -jar wiremock-1.57-standalone.jar --verbose[/code] แสดงผลการทำงานดังรูป โดยค่า default นั้นจะทำงานที่ port 8080 แต่เราสามารถเปลี่ยน port ได้ด้วยคำสั่ง [code]$java -jar wiremock-1.57-standalone.jar --port 9090 --verbose[/code] สามารถดูการใช้งานเพิ่มเติมได้ที่ Running standalone เมื่อ run WireMock เรียบร้อยแล้วจะสร้าง folder ขึ้นมา 2 folder คือ- __files
- mappings
2. การใช้งานส่วนของ Admin
เข้าไปที่ url http://localhost:8080/__admin/ เพื่อดูว่า mapping ต่าง ๆ ของ API ใน WireMock มีอะไรบ้าง แน่นอนว่า ตอนเริ่มต้นต้องไม่มีอะไรเลย แสดงดังรูป3. มาสร้าง Mock API กันดีกว่า
ความต้องการของผมคือ สร้าง API สำหรับการคงข้อมูลสินค้า ดังนี้- Endpoint = /products
- ใช้งานผ่าน HTTP GET
- Response ที่ส่งกลับมาอยู่ในรูปแบบของ JSON ซึ่งประกอบไปด้วย id, name, price ของสินค้า
4. ใช้งานจริง ๆ กันดีกว่า
สามารถเข้าใช้งานผ่าน URL http://localhost:8080/products แสดงผลการทำงานดังนี้ หรือสามารถทดสอบผ่าน Postman หรือ REST Client หรือ Curl ก็ได้นะ เลือกได้ตามความสะดวกของแต่ละคน เพียงเท่านี้ก็สามารถจำลอง API Server ด้วย WireMock กันได้แล้วนะส่วน Stubby4J ก็ทำการติดตั้งและใช้งานคล้าย ๆ กัน
ต่างกันเพียงรูปแบบของไฟล์ configuration และ รูปแบบข้อมูล ซึ่งอยู่ในรูปแบบของ YAML จากการใช้งาน Stubby4J จะ configuration API ง่ายกว่า WireMock พอสมควร แต่ขอแนะนำให้ลองด้วยตนเองนะครับมีคนถามว่า ถ้า API พัฒนาเสร็จแล้ว มีการเปลี่ยนแปลงจากที่ตกลงกันไว้ล่ะ ?
คำตอบคือ ต้องเปลี่ยนไงล่ะ อย่าลืมเปลี่ยนใน WirMock ด้วยนะ และถ้าคุณมีชุดการทดสอบ ก็จะรู้ได้ทันทีว่า การเปลี่ยนแปลงเหล่านั้น กระทบต่อระบบของคุณหรือไม่ ?ซึ่งเป็นประเด็นที่สำคัญมาก ๆ คุณรู้หรือไม่ว่า การเปลี่ยนแปลงต่าง ๆ มันส่งผลกระทบอะไรบ้าง ?