Unit test: ตลาดแลกเปลี่ยนเงินตราต่างประเทศ
มาฝึกสร้างและกำหนดพฤติกรรม mock ในบริบทของระบบธนาคารกัน! เขียน unit test ให้ครบสำหรับ ExchangeApp ซึ่งใช้งาน European Central Bank โดยขณะที่ทดสอบลอจิกของ convertEuroTo() อย่า mock เมธอดนี้โดยตรง แต่ให้ mock dependency ของมันแทน เพื่อตรวจสอบว่าทำงานได้ถูกต้อง
แพ็กเกจ JUnit และ Mockito ที่จำเป็นได้ถูก import ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทดสอบใน Java เบื้องต้น
คำแนะนำการฝึกหัด
- สร้าง mock สำหรับ
EuropeanCentralBankServer - ใช้ syntax ที่ถูกต้องเพื่อกำหนดให้ mock คืนค่า
12345.0 - ตรวจสอบว่าการแปลงสกุลเงินให้ผลลัพธ์ที่ต้องการ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
class Main {
public static void main(String[] args) {
launchMockitoTestsAndPrint(ExchangeAppTest.class);
}
}
class ExchangeAppTest {
@Test
void convertEuroTo_convertsTST() {
// Create a mock object for the EuropeanCentralBankServer
EuropeanCentralBankServer bank = ____(EuropeanCentralBankServer.class);
ExchangeApp exchangeApp = new ExchangeApp(bank);
double euroAmount = 100;
// Stub the mock to return a value for given input
____(exchangeApp.convertEuroTo("TST", 100)).____(12345.0);
double tstAmount = exchangeApp.convertEuroTo("TST", euroAmount);
System.out.println("Converted " + euroAmount + " EUR to " + tstAmount + " TST.");
// Assert on the exact expected value of tstAmount
____(1234500, ____);
}
}