เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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);
    }
}
แก้ไขและรันโค้ด