
ที่มาภาพ: Unknown Source
วิธีตั้งค่าและใช้งาน WireMock บน Docker สร้าง Mock API เพื่อการทดสอบอัตโนมัติ
⚡ สรุป 30 วิ
WireMock เป็นเครื่องมือที่ช่วยสร้าง *Mock API* เพื่อจำลองพฤติกรรมของบริการจริงในขั้นตอนทดสอบอัตโนมัติ การใช้งานบน Docker ทำให้การตั้งค่าเป็นแบบ *portable* และสามารถทำงานร่วมกับ CI/CD pipeline ได้อย่าง…
Overview — Overview
WireMock เป็นเครื่องมือที่ช่วยสร้าง *Mock API* เพื่อจำลองพฤติกรรมของบริการจริงในขั้นตอนทดสอบอัตโนมัติ การใช้งานบน Docker ทำให้การตั้งค่าเป็นแบบ *portable* และสามารถทำงานร่วมกับ CI/CD pipeline ได้อย่างราบรื่น
- ลดความซับซ้อน ของสภาพแวดล้อมทดสอบ
- เร่งเวลา ในการสร้างและปรับเปลี่ยน stub ต่าง ๆ
- สามารถจำลองสถานการณ์ *edge case* ได้โดยไม่ต้องพึ่งบริการจริง
Prerequisites — Prerequisites
ก่อนเริ่มใช้งาน WireMock บน Docker จำเป็นต้องมีเครื่องมือพื้นฐานต่อไปนี้
- Docker Engine เวอร์ชัน 20 ขึ้นไป
- Docker Compose (ถ้าต้องการจัดการหลายคอนเทนเนอร์)
- ความเข้าใจเบื้องต้นเกี่ยวกับ *REST API* และ HTTP status code
- แก้ไขไฟล์ JSON/YAML สำหรับกำหนด stub
How It Works — How It Works
WireMock ทำงานเป็น *HTTP server* ที่รับคำขอแล้วตอบกลับตาม *stub mapping* ที่เรากำหนดไว้ การทำงานบน Docker เพียงดึงภาพ (image) ที่เตรียมไว้จาก Docker Hub แล้วรันคอนเทนเนอร์ จะได้เซิร์ฟเวอร์พร้อมใช้งานทันที
| คุณลักษณะ | Standalone Jar | Docker Image |
|---|---|---|
| การติดตั้ง | ดาวน์โหลดไฟล์ JAR + Java Runtime | `docker pull wiremock/wiremock` |
| ความยืดหยุ่นของสภาพแวดล้อม | ต้องจัดการ Java และพอร์ตเอง | แยกจากระบบโฮสต์, กำหนดพอร์ตได้ง่าย |
| การรวมใน CI/CD | ต้องเขียนสคริปต์เพิ่ม | ใช้ `docker-compose` หรือคำสั่ง `docker run` เพียงบรรทัดเดียว |
Step-by-Step Setup — Step‑By‑Step
- **ขั้นตอนที่ 1: ดึงภาพ WireMock อย่างเป็นทางการ
```bash docker pull wiremock/wiremock:latest ```
- **ขั้นตอนที่ 2: สร้างโฟลเดอร์สำหรับเก็บ stub และไฟล์คอนฟิก
- `mocks/mappings/` เก็บไฟล์ JSON ที่กำหนด request‑response mapping
- `mocks/__files/` เก็บ payload หรือไฟล์ static อื่น ๆ
- **ขั้นตอนที่ 3: เขียน stub ตัวอย่าง (ไฟล์ `mocks/mappings/user-get.json`)
```json { "request": { "methodGET", "urlPathPattern/api/users/([0-9]+)" }, "response": { "status": 200, "bodyFileNameuser-${1}.json", "headers": { "Content-Typeapplication/json" } } } ```
- **ขั้นตอนที่ 4: สร้างไฟล์ response ตัวอย่างใน `mocks/__files/user-123.json`
```json { "id": 123, "nameสมชาย ใจดี", "[email protected]" } ```
- **ขั้นตอนที่ 5: รันคอนเทนเนอร์พร้อม mount โฟลเดอร์ stub
```bash docker run -d --name wiremock \ -p 8080:8080 \ -v $(pwd)/mocks:/home/wiremock \ wiremock/wiremock:latest \ --verbose ```
- **ขั้นตอนที่ 6: ตรวจสอบว่า Mock API ทำงานแล้วโดยเปิด `http://localhost:8080/__admin/mappings` ในเบราว์เซอร์
Using Mock API in Tests — Using In Tests
เมื่อติดตั้ง WireMock แล้ว สามารถเรียกใช้ endpoint เหล่านั้นจากชุดทดสอบอัตโนมัติได้ทันที เช่น ใช้ JUnit หรือ TestNG ร่วมกับ HTTP client library
- กำหนด Base URL ของ test เป็น `http://localhost:8080`
- ทำการ POST หรือ GET ไปยัง endpoint ที่กำหนดใน stub
- ตรวจสอบ response body, status code และ header ตามที่คาดหวัง
- หากต้องการจำลองสถานการณ์ error ให้เพิ่ม stub ที่ตอบกลับด้วย 4xx/5xx
Tips & Common Pitfalls — Tips
**Tip: ใช้ `--record-mappings` พร้อมกับ `--proxy-all` เพื่อตรวจจับและบันทึก request‑response จากบริการจริงเป็นฐานข้อมูล stub เริ่มต้น
>
**Warning: อย่าลืมเปิดพอร์ตที่คอนเทนเนอร์ใช้ (`-p 8080:8080`) หากพอร์ตชนกับแอปอื่นในเครื่อง จะทำให้ WireMock ไม่สามารถรับคำขอได้
- เก็บไฟล์ stub ในระบบ version control เพื่อให้ทีมงานทุกคนเข้าถึงเวอร์ชันเดียวกัน
- ปิดการบันทึก verbose (`--verbose`) ใน production‑like CI/CD pipeline เพื่อลด noise ใน log
Summary — Summary
- ดึงภาพ WireMock จาก Docker Hub แล้ว mount โฟลเดอร์ stub เพื่อให้คอนเทนเนอร์อ่านไฟล์ได้ทันที
- สร้าง *request mapping* และ *response payload* ในรูป JSON ภายใต้ `mappings` และ `__files` ตามโครงสร้างที่ WireMock กำหนด
- รันคอนเทนเนอร์ด้วยพอร์ตที่เปิดเผย (`-p 8080:8080`) แล้วใช้ endpoint เหล่านั้นในชุดทดสอบอัตโนมัติได้เลย
- ใช้ tip การบันทึก mapping จาก proxy เพื่อเร่งการสร้าง stub ใหม่ และตรวจสอบให้แน่ใจว่าไม่มีพอร์ตชนกันหรือ log มากเกินไป
ด้วยขั้นตอนสั้น ๆ นี้ คุณก็พร้อมใช้ WireMock บน Docker เป็น *mock server* ที่เสถียรสำหรับทุกกรณีทดสอบอัตโนมัติของโครงการคุณแล้ว.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่าและใช้งาน WireMock บน Docker สร้าง Mock API เพื่อการทดสอบอัตโนมัติ
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 10 สิงหาคม 2569 เวลา 10:50



