Skip to content

Stub JavaScript ES6 Class method ด้วย Sinon

ใครที่เขียน Unit test สำหรับ JavaScript, Node.js น่าจะรู้จัก Sinon เป็นอย่างดี เพราะเป็นไลบรารี่สำหรับสร้าง mock, stub จำลองการทำงานของ service ภายนอกที่นิยมมากตัวหนึ่ง

เดิมที JavaScript นั้นไม่มีแนวคิดเรื่อง class เป็นแค่ function หนึ่งเท่านั้น แต่นับตั้งแต่ ES2015 หรือ ES6 เป็นต้นมานั้นมี class ให้ใช้แล้ว (ถึงจะแบบถูๆ ไถๆ ก็เถอะ) แต่ปัญหาที่พบคือ Sinon รุ่นเก่าๆ มันใช้กับ class ไม่ได้เพราะไม่ได้อัปเดตตามมาตรฐาน ES6

แต่ตอนนี้ Sinon v2.4.1 (ณ วันที่เขียนวันนี้นะ จริงๆ ตั้งแต่รุ่น 2 เป็นต้นมาอาจจะใช้ได้แล้ว) นั้นใช้กับ class ได้แล้ว! จะว่ารองรับตรงๆ เลยก็ไม่เชิง คือมันเป็น work around ที่หน้าตา JavaScript มากๆ สมมุติว่าผมมีคลาสแบบนี้

ถ้าผมต้องการจะ stub method work() ก็ทำแบบนี้

จะเห็นว่าผมไม่ได้ใช้เป็น Developer  เฉยๆ แต่เป็น Developer.prototype

JavaScript โคตรๆ เลยเนอะ

 

Be First to Comment

Leave a Reply

Your email address will not be published.