Testing error case
ข้อดีของการใช้งาน MockWebServer คือ การที่สามารถเปลี่ยน Response ต่างๆจาก Server ได้ตามที่ต้องการ ดังนั้นจึงเหมาะมากกับการทดสอบ Error ต่าง ที่ที่มาจากตัว API หรือ Network
- เพิ่ม Test case ที่ 2 โดยเปลี่ยน Response code จาก 200 เป็น 404
@Test
public void loginFail() {
server.enqueue(new MockResponse().setResponseCode(404));
}
- เช่นเดียวกับ เคส login สำเร็จ เราต้องสั่งให้ App เรื่มทำงานก่อน
@Test
public void loginFail() {
server.enqueue(new MockResponse().setResponseCode(404));
Intent intent = new Intent();
mActivityRule.launchActivity(intent);
}
- เราจะใช้ Action เหมือนกับ login success ก็ได้ แต่ผลลัพธ์ที่ได้จะเปลี่ยนไป ดังนั้นต้องเปลี่ยน Assertion ให้มาจับ Error message แทน
@Test
public void loginFail() {
server.enqueue(new MockResponse().setResponseCode(404));
Intent intent = new Intent();
mActivityRule.launchActivity(intent);
onView(withId(R.id.username)).perform(typeText("username"));
onView(withId(R.id.password)).perform(typeText("password"));
onView(withId(R.id.login_button)).perform(click());
onView(withText("dialogMessage")).check(matches(isDisplayed()));
}
ด้วยวิธีการลักษณะนี้ ทำให้สามารถจำลอง Response แบบต่างๆที่นอกเหนือไปจากปกติได้ เช่น หมดเวลา หรือ network มีการ delay มากๆ เป็นต้น