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

Unit test: ข้อยกเว้นในการแลกเปลี่ยนสกุลเงิน

สถานการณ์ผิดพลาดที่อาจเกิดขึ้นกับแอปแลกเปลี่ยนเงินตราคือเซิร์ฟเวอร์ของธนาคารไม่พร้อมใช้งาน เนื่องจากระบบขัดข้องหรือปัญหาด้านเครือข่าย เพื่อป้องกันข้อยกเว้นที่อาจสร้างปัญหา จึงได้เพิ่ม try/catch ไว้ภายในเมธอด convertEuroTo

จำลองสถานการณ์ผิดพลาดนี้โดยให้ mock object EuropeanCentralBankServer โยนข้อยกเว้นเมื่อมีการร้องขออัตราแลกเปลี่ยน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การทดสอบใน Java เบื้องต้น

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดให้ mock object ของธนาคารโยนข้อยกเว้นเมื่อมีการเรียก getRateEuroTo
  • สร้าง object ข้อยกเว้นที่ต้องการจำลองให้ถูกต้อง
  • ตรวจสอบว่าเมธอด convertEuroTo ไม่โยนข้อยกเว้น แต่คืนค่า -1 ในสถานการณ์นี้

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

class Main {
    public static void main(String[] args) {
        launchMockitoTestsAndPrint(ExchangeAppTest.class);
    }
}

class ExchangeAppTest {
    @Test
    void convertEuroTo_throwsException_whenBankUnavailable() {
        EuropeanCentralBankServer bank = mock(EuropeanCentralBankServer.class);
        ExchangeApp exchangeApp = new ExchangeApp(bank);
        double euroAmount = 450;
        // Stub the mock to throw an exception
        when(exchangeApp.convertEuroTo("TST", 100)).____(new ____("Bank server is unavailable."));
        
        double tstAmount = exchangeApp.convertEuroTo("TST", euroAmount);

		// Assert on the return value of the method
		____(____, ____);
    }
}
แก้ไขและรันโค้ด