我会在此测试中使用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并将Web服务调用到一个单独的类中。为此类创建一个接口将允许您创建一个模拟,然后您可以指示该行为。
创建此接口后,您可以使用EasyMock创建一个模拟,它将根据测试用例返回指定的对象。上面的示例简化了如何构建基本的模拟测试以及界面如何工作。
有关模拟框架的更多信息,请参见此问题。另外,此示例假定使用Java,但所有语言都提供了模拟框架,尽管实现方式有所不同,但它们的工作方式通常相同