มีคำถามเกี่ยวกับ ความแตกต่างระหว่าง @Mock กับ @InjectMocks ใน Mockito
ว่าใช้งานเหมือนหรือต่างกันอย่างไร ?
ก่อนอื่นต้องทำความรู้จักกับ @InjectMocks ก่อน
เป็น annotation ที่เพิ่มเข้ามาใน Mockito ตั้งแต่ version 1.8.3
ตอนนี้ Mockito version 4.3.1
ใช้สำหรับการสร้าง object ของ class ที่จะทดสอบ
พร้อมทั้ง inject หรือส่ง dependency ต่าง ๆ เข้าไปยัง class ที่จะทดสอบแบบอัตโนมัติ
ทั้ง constructor, field หรือ setter injection ก็ตาม
ส่วน @Mock เป็นเพียงการสร้าง instance ของ dependency เท่านั้น
อ่านแล้วงง มาดูตัวอย่าง code ดีกว่า
[gist id="47f033653b42c3e868ffb4918616513a" file="1.java"]จาก code ตัวอย่าง จะใช้งานง่ายขึ้น
และมี magic เข้ามา คือ การ inject dependency เข้าไปให้แบบอัตโนมัติ
และเป็น annotation ที่มาพร้อมกับความซับซ้อนที่เราต้องเข้าใจ
เนื่องจากทำให้การใช้งานสั้นลง
แต่เพิ่มความงงเข้าไป