ในบริบทนี้คำว่า "ต้นขั้ว" ใช้แทนคำว่า "เยาะเย้ย" แต่เพื่อความชัดเจนและแม่นยำผู้เขียนควรใช้ "เยาะเย้ย" เนื่องจาก "การเยาะเย้ย" เป็นลักษณะของต้นขั้ว แต่สำหรับการทดสอบ เพื่อหลีกเลี่ยงความสับสนเราจำเป็นต้องกำหนดว่าต้นขั้วคืออะไร
ในบริบททั่วไปต้นขั้วเป็นส่วนหนึ่งของโปรแกรม (โดยทั่วไปคือฟังก์ชันหรือวัตถุ) ที่ห่อหุ้มความซับซ้อนของการเรียกใช้โปรแกรมอื่น (โดยปกติจะอยู่ในเครื่องอื่น, VM หรือกระบวนการ - แต่ไม่เสมอไปก็สามารถเป็นแบบโลคัลได้เช่นกัน วัตถุ). เนื่องจากโปรแกรมจริงที่จะเรียกใช้มักไม่ได้อยู่ในพื้นที่หน่วยความจำเดียวกันการเรียกใช้จึงต้องมีการดำเนินการหลายอย่างเช่นการกำหนดแอดเดรสการเรียกใช้รีโมตจริงการจัดเรียงข้อมูล / การจัดลำดับข้อมูล / อาร์กิวเมนต์ที่จะส่งผ่าน (และเหมือนกันกับผลลัพธ์ที่เป็นไปได้) อาจจะเกี่ยวข้องกับการพิสูจน์ตัวตน / ความปลอดภัยและอื่น ๆ โปรดทราบว่าในบางบริบทต้นขั้วยังเรียกว่าพร็อกซี (เช่นพร็อกซีแบบไดนามิกใน Java)
การเยาะเย้ยเป็นชนิดของต้นขั้วที่เฉพาะเจาะจงและมีข้อ จำกัด เนื่องจากการจำลองเป็นการแทนที่ฟังก์ชันหรือวัตถุอื่นสำหรับการทดสอบ ในทางปฏิบัติเรามักใช้ mocks เป็นโปรแกรมเฉพาะที่ (ฟังก์ชันหรือวัตถุ) เพื่อแทนที่โปรแกรมระยะไกลในสภาพแวดล้อมการทดสอบ ไม่ว่าในกรณีใดการจำลองอาจจำลองพฤติกรรมจริงของโปรแกรมที่ถูกแทนที่ในบริบทที่ จำกัด
ส่วนที่มีชื่อเสียงส่วนใหญ่เห็นได้ชัดสำหรับการเขียนโปรแกรมแบบกระจายเมื่อจำเป็นต้องเรียกใช้โพรซีเดอร์ระยะไกล ( RPC ) หรือวัตถุระยะไกล ( RMI , CORBA ) เฟรมเวิร์กการเขียนโปรแกรม / ไลบรารีแบบกระจายส่วนใหญ่ทำให้การสร้างต้นขั้วโดยอัตโนมัติเพื่อที่คุณจะได้ไม่ต้องเขียนด้วยตนเอง Stubs สามารถสร้างได้จากนิยามอินเตอร์เฟสซึ่งเขียนด้วยIDLเป็นต้น (แต่คุณยังสามารถใช้ภาษาใดก็ได้เพื่อกำหนดอินเทอร์เฟซ)
โดยปกติแล้วใน RPC, RMI, CORBA และอื่น ๆ สิ่งหนึ่งจะแยกความแตกต่างของต้นขั้วฝั่งไคลเอ็นต์ซึ่งส่วนใหญ่จะดูแลการจัดเรียง / ทำให้เป็นอนุกรมของอาร์กิวเมนต์และดำเนินการเรียกใช้จากระยะไกลและสตับฝั่งเซิร์ฟเวอร์ซึ่งส่วนใหญ่จะดูแลเรื่องการยกเลิกการแยกส่วน / deserializing อาร์กิวเมนต์และเรียกใช้ฟังก์ชัน / วิธีการระยะไกล เห็นได้ชัดว่าต้นขั้วไคลเอ็นต์จะอยู่ที่ฝั่งไคลเอ็นต์ในขณะที่ตัดต้นขั้ว (มักเรียกว่าโครงกระดูก) อยู่ที่ฝั่งเซิร์ฟเวอร์
การเขียนต้นขั้วที่มีประสิทธิภาพดีและทั่วไปจะค่อนข้างท้าทายเมื่อต้องจัดการกับการอ้างอิงวัตถุ เฟรมเวิร์กอ็อบเจ็กต์แบบกระจายส่วนใหญ่เช่น RMI และ CORBA จัดการกับการอ้างอิงอ็อบเจ็กต์แบบกระจาย แต่นั่นเป็นสิ่งที่โปรแกรมเมอร์ส่วนใหญ่หลีกเลี่ยงในสภาพแวดล้อม REST เช่น โดยปกติแล้วในสภาพแวดล้อม REST โปรแกรมเมอร์ JavaScript จะสร้างฟังก์ชันที่เรียบง่ายเพื่อห่อหุ้มการเรียกใช้ AJAX (การจัดลำดับวัตถุที่รองรับJSON.parse
และJSON.stringify
) โครงการSwagger Codegenให้การสนับสนุนอย่างกว้างขวางสำหรับการสร้าง REST Stubs โดยอัตโนมัติในภาษาต่างๆ