จากบทความที่แล้ว ที่เป็นเรื่องของ mock function ใน jest
หากเราต้องการที่จะจำลองการใช้งานของฟังก์ชั่นภายในไฟล์เดียวกัน เราจะต้องใช้งาน spy
แทนการใช้งาน mock
โดยบทความนี้เราจะมาพูดถึงการใช้งาน spy
ใน jest กัน
Spy
อธิบายเกี่ยวกับ spy แบบง่ายๆ เลย มันก็เป็นเหมือนการสอดส่อง ฟังก์ชั่นที่เราต้องการจะจับตามันและตรวจสอบว่า...
- ฟังก์ชั่นถูกเรียกหรือไม่
- ฟังก์ชั่นถูกเรียกกี่ครั้ง
- ตรวจสอบ arguments ที่ส่งไปยังฟังก์ชั่น
- ตรวจสอบค่าที่ return จากฟังก์ชั่น
รวมถึง mocking return ฟังก์ชั่นภายในไฟล์เดียวกันกับไฟล์ที่ต้องการทดสอบ
เราลองมาดูตัวอย่างกันเลย
Spy Self File
หากเราต้องการทดสอบฟังก์ชั่น add()
ได้มีการถูกเรียกใช้งานหรือไม่ เราจะเขียนการทดสอบได้ดังนี้
หากต้องการที่จะทดสอบว่าฟังก์ชั่น add()
มีการเรียกใช้งานกี่ครั้ง ให้ใช้ .toHaveBeenCalledTimes(1)
อย่าลืม เพิ่ม jest.restoreAllMocks()
เข้าไปด้วย เพื่อให้มันเคลียค่าทุกครั้งในแต่ละการทดสอบ ถ้าไม่ได้ใส่เข้าไป jest จะนับจำนวนครั้งที่เรียกใช้งานเรื่อยๆ
Spy other files
หากเราต้องการที่จะ spy ในไฟล์อื่นๆ ก็สามารถทำได้ดังนี้
Spy Library
เหมือนกันกับ mock function เราสามารถ spy ตัว library เพื่อตรวจสอบการทำงานได้ด้วยเช่นกัน
ตัวอย่าง
อันนี้เป็นตัวอย่างง่ายๆ ในการใช้งาน spy
ของ jest หากมีการใช้งานอื่นๆ เพิ่มเติม ก็สามารถเข้าไปดูใน document ของ jest ได้เหมือนเดิม