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
____(____, ____);
}
}