Coding Gun

Mock Server ด้วย Postman


Mock Server คืออะไร

การ Mock จะเป็นการสร้างผลลัพธ์ที่เราอยากได้ ซึ่งการเป็น mock จะทำงานแบบ Static คือ เป็นตัวปลอมที่ไม่สามารถจำลองการทำงานจริงของระบบได้ จะมี ผลลัพธ์ที่ Return กลับไปเหมือนเดิมทุกครั้ง ดังนั้นสิ่งที่เราต้องการจาก mock คือการได้ output ที่เราต้องการเมื่อเรา input ถูกต้อง แต่ถ้าเรา input เข้าไปไม่ถูกต้อง server ก็จะ throw exception ออกมา

Mocks are pre-programmed with expectations which form a specification of the calls they are expected to receive. They can throw an exception if they receive a call they don’t expect and are checked during verification to ensure they got all the calls they were expecting.

Martin Fowler

ตามความหมายที่ Martin Fowler ได้ให้ไว้ keyword ที่สำคัญคือ expectations ซึ่งบ่งบอกถึงการทำงานของ Mock ได้เป็นอย่างดี โดย Mock จะต้องกำหนด request และ response ที่แน่นอน(ถ้าส่ง request แบบนี้จะ response กลับไปยังไงดี) และถ้าส่ง request มาไม่ตรงกับที่คาดการณ์ไว้ก็จะ throw error กลับไป หรือใน postman เราสามารถส่ง header เข้ามาได้ว่าเราต้องการ response ที่เป็น error รหัสอะไร

จุดประสงค์ของการ Mock คือการจำลอง Service ขึ้นมาโดยอาจเป็น service ที่เราจะพัฒนาในลำดับต่อไป หรืออาจเป็น service ที่มีอยู่แล้วแต่ยังไม่อยากเข้าไปเชื่อมต่อตอนนี้

การ Mock Server ใน Postman

ใน Postman จะมี Feature ที่ช่วยให้เราสามารถ Mock Server ได้โดยที่คุณต้องสมัคร Free Account ใน Website ของ postman หลังจากนั้นเมื่อเรา Login ใน Postman เราจะสามารถเข้าไปสร้าง Mock Server ได้

ข้อควรระวังคือ Free Account จะตั้ง Server ของเราเป็น Public เพราะฉะนั้นเราอย่าใส่ข้อมูลของจริง(Sensitive Data) ลงไปในนี้ เพราะใครๆก็สามารถเข้าถึง Mock Server ของเราได้

สมัคร Free Account ของ Postman ได้ตาม Link นี้ https://www.postman.com

วิธีการตั้ง Mock Server

  1. เลือก create new mock server
  2. เลือกสร้าง collection ใหม่หรือนำข้อมูลใน collection ที่มีอยู่แล้วมาสร้างเป็น Mock server
  3. ตั้งชื่อให้กับ Mock server
  4. เลือกให้ตัวแปร Base URL ของ Mock Server ไปเก็บอยู่ใน Environment ไหน โดย default postman จะทำการสร้าง environment ขึ้นมาใหม่ และจะใช้ชื่อเดียวกับ Mock Server ที่เราตั้งไว้ในขั้นตอนก่อนหน้านี้
  5. เลือกว่าจะให้มัน simulate network ให้มันช้าเหมือนของจริงรึเปล่า(เรื่องการทำงานช้าน่าจะ test หลังจากนี้มากกว่า)
  6. กำหนด response ที่จะ return กลับไป(เราอยากให้ return แบบไหนใส่ได้เลย) โดยที่เริ่มต้นจะมี Default response มาให้แค่ตัวเดียว
  7. หลังจากนี้สามารถกด Add request หรือ response ที่ต้องการได้เลย

หลักการ Match URL

postman จะทำการ reponse กลับไปโดยเลือกจาก URL ที่มีความใกล้เคียงที่สุด หลักการคิดของ postman คือ

  1. ถ้าตรงกันแบบเป๊ะๆ จะเลือก response ของ request นั้นเลย
  2. ถ้าไม่มี URL ไหนตรงเลยมันจะพยายามตัด / และ ตัวเลขท้ายออก เช่นถ้าเราไม่มี request ของ /customer/3 postman จะไปหา /customer แทน

อยากให้ Mock Server return error

  1. เพิ่ม response ของ error โดยเลือก return http status code ที่ต้องการ เช่น
http status code description
404 Not Found (ไม่มี resource นี้อยู่)
405 Method not allow (ห้ามใช้ http method นี้)
401 Unauthorize (Authen ไม่ผ่าน)
403 Forbidden (ไม่ผ่าน Authorization)
  1. ตอนส่ง request ให้ใส่ header เพิ่มเข้าไปว่า
x-mock-response-code: 404

ผลลัพธ์ที่ได้ก็จะเป็นไปตาม Request URL และ http status code

Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security