私はMyRestService
クラスのメソッド次しているだけのローカル変数を使用した試験方法は:Mockito:
public Address getOfficeLocation(String id){
RestClient restClient = new RestClient(tokenOauthUrl);
String url = String.format(officeAddress, id);
JSONObject jsonObject = restClient.get(url, null, credentials);
return AddressParser.parseOfficeAddress(jsonObject);
}
私が呼ばれたrestClient.get
したいと思います。私は次のテストを書いた:
@Mock
private MyRestService myService;
@Mock
private RestClient restClient;
@Test
public void getOfficeLocationTest(){
myService.getOfficeLocation(any(String.class));
Mockito.verify(restClient, Mockito.times(1)).get(any(String.class), any(MultivaluedMap.class), any(Credentials.class));
}
私はこれが間違ったアプローチだと思います。私はテストの失敗を得る:Wanted but not invoked: Actually, there were zero interactions with this mock.
私のメソッドをテスト可能にするには?
あなたは依存性の注入を可能にするために、あなたの 'MyRestService'コードを変更する必要があるだろうに
RestClient
を嘲笑注入します - 私たちの' RestClient'は依存性があります。 –モック 'restClient'を' myService'モックに注入しましたか?いずれにしても、あなたはブラックボックステストの原則に違反しています。 'RestClient'、imhoのための別のテストを書いたほうがいいです。 – vikingsteve
あなたのコードでは、Restuckの新しいインスタンスを作成したので、あなたの模擬バージョンのRestClientは使用されません – user7