Unit test: ข้อความในฐานข้อมูล
ลองพิจารณา ErrorStore และ InfoStore จากบทเรียน สมมติว่าเมธอด process(String message) ถูกเรียกใช้กับข้อความประเภท [WARN] ซึ่งหมายความว่าข้อความนั้นจะไม่ถูกบันทึกลงในฐานข้อมูลใดเลย ให้เขียนเทสเพื่อตรวจสอบสิ่งนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทดสอบใน Java เบื้องต้น
คำแนะนำการฝึกหัด
- ตรวจสอบว่าข้อความไม่ได้ถูกบันทึกลงใน
infoStore - ตรวจสอบว่าข้อความไม่ได้ถูกบันทึกลงใน
errorStoreเช่นกัน โดยใช้วิธี verify แบบtimes() - ในคำสั่งเดียวกันนั้น ให้เพิ่มเมธอดของฐานข้อมูล
save()ที่ไม่ได้ถูกเรียกใช้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
public class Main {
public static void main(String[] args) {
launchMockitoTestsAndPrint(MessageProcessorTest.class);
}
}
class MessageProcessorTest {
@Test
void process_savesNowhere_whenWrongMessageType() {
InfoStore infoStore = mock(InfoStore.class);
ErrorStore errorStore = mock(ErrorStore.class);
MessageProcessor processor = new MessageProcessor(infoStore, errorStore);
String message = "[WARN] The search is slow.";
processor.process(message);
// Verify infoStore was not called
____(infoStore);
// Verify errorStore.save was called 0 times
verify(errorStore, ____(0)).____(message);
}
}