ฉันจะใช้บางอย่างเช่น EasyMock สำหรับการทดสอบนี้ กรอบการเยาะเย้ยเป็นวิธีที่เหมาะในการลบการอ้างอิงภายนอกในชั้นเรียนและให้คุณควบคุมผลการพึ่งพาภายนอกทั้งหมดในระหว่างการทดสอบ เพื่อขยายตัวอย่างของคุณเล็กน้อย:
class WebClass {
private WebServiceInterface webserviceInterface;
void method(){
R result = webServiceInterface.performWebServiceCall();
... do something with result
}
public void setWebServiceInterface(WebServiceInterface webServiceInterface){
this.webServiceInterface = webServiceInterface;
}
}
interface WebServiceInterface {
R performWebServiceCall();
}
class WebClassTest {
private WebServiceInterface mock;
private R sampleResult = new R();
@Before
public void before(){
mock = EasyMock.createMock(WebServiceInterface.class);
}
@Test
public void test() {
WebClass classUnderTest = new WebClass();
EasyMock.expect(mock.performWebServiceCall()).andReturn(sampleResult);
classUnderTest.setWebServiceInterface(mock);
classUnderTest.method();
EasyMock.verify(mock);
}
}
สิ่งแรกที่คุณต้องทำคือการแยกตรรกะในชั้นเรียนของคุณที่คุณใช้ Jersey เพื่อรับ WebResource และเรียกบริการเว็บลงในชั้นเรียนที่แยกต่างหาก การสร้างอินเทอร์เฟซสำหรับคลาสนี้จะช่วยให้คุณสร้างจำลองที่คุณสามารถกำหนดพฤติกรรมได้
เมื่อสร้างส่วนต่อประสานนี้แล้วคุณสามารถสร้างจำลองโดยใช้ EasyMock ซึ่งจะส่งคืนวัตถุที่ระบุไว้ในกรณีทดสอบของคุณ ตัวอย่างด้านบนคือการทำให้โครงสร้างการทดสอบจำลองเป็นเรื่องง่ายขึ้นและส่วนต่อประสานของคุณจะทำงานอย่างไร
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกรอบการเยาะเย้ยโปรดดูคำถามนี้ นอกจากนี้ตัวอย่างนี้สมมติว่าการใช้ Java แต่กรอบการเยาะเย้ยมีให้บริการในทุกภาษาและแม้ว่าพวกเขาจะถูกนำไปใช้งานที่แตกต่างกันพวกเขาจะทำงานในลักษณะเดียวกัน