4 行の疑似コードが MyService にあり、MyService が MyDAO を使用してデータベースにアクセスすると仮定すると、次のようになります。
public class MyService {
private MyDAO myDAO;
public MySErvice(MyDAO myDAO) {
this.myDAO = myDAO;
}
public List<City> getRandomCityList() {
List<Country> countries = myDAO.getCountries();
Country c = pickRandom(countries);
return myDAO.getCities(country);
}
}
テストするには、Mockito などのモック フレームワークを使用して MyDAO をモックし、このモックを MyService インスタンスに挿入します。メソッドがスローされたときにネットワークがダウンしたときに、実際の MyDAO によってスローされる例外と同じ例外をモックにスローさgetCities()
せ、MyService が正しいことを行うことを確認します。
MyDAO mockDAO = mock(MyDAO.class);
List<Country> countries = Arrays.asList(new Country(...));
when(mockDAO.getCountries()).thenReturn(countries);
when(mockDAO.getCities((Country) any(Country.class))).thenThrow(new NetworkIsDownException());
MyService underTest = new MyService(mockDAO);
// TODO call underTest.getRandomCityList() and check that it does what it should do.