このテストには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の使用を想定していますが、モックフレームワークはすべての言語で利用可能であり、実装方法は異なりますが、通常は同じように動作します