이 테스트에는 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를 사용한다고 가정하지만 모의 프레임 워크는 모든 언어로 제공되며 다르게 구현되지만 일반적으로 동일한 방식으로 작동합니다.