У меня есть программа, которую я хочу издеваться над данными для использования Mockito.
Моя основная программа AdDataAggregate
и она называет AdDataConnect
.
AdDataConnect
делает вызов API, который возвращает строку, которая анализируется в JSON и агрегируется.Мой макет не используется моей программой
Я создал издевательства, и они возвращают данные, но они не используются основной программой.
Может кто-нибудь, пожалуйста, покажет мне ошибку моих путей. Заранее спасибо за вашу помощь.
//Main Program
public class AdDataAggregate {
public List<AdData> processInfo(long[] adIds){
AdDataConnect adDataConnect = new AdDataConnect();
List<AdData> adAccumData = new ArrayList<AdData>();
for (long adId: adIds) {
data = adDataConnect.connectToData(adId); <———— method to Mock.
}
}
}
//Test Program
@RunWith(MockitoJUnitRunner.class)
public class AdDataTest {
@InjectMocks
private AdDataAggregate adDataAggregate = new AdDataAggregate();
@Mock
private AdDataConnect adDataConnect;
private String oneAdId =
"[{\"advertiser_id\":\"1\",\"ymd\":\"2015-12-" +
"07\",\"num_clicks\":10,\"num_impressions\":100}," +
"{\"advertiser_id\":\"1\",\"ymd\":\"2015-12-" +
"06\",\"num_clicks\":20,\"num_impressions\":200}," +
"{\"advertiser_id\":\"1\",\"ymd\":\"2015-12-" +
"05\",\"num_clicks\":30,\"num_impressions\":300}]";
@Test
public void testWithOneAdId(){
MockitoAnnotations.initMocks(this);
adDataConnect = mock(AdDataConnect.class);
adDataAggregate = mock(AdDataAggregate.class);
when(adDataConnect.connectToData(eq(1L)))
.thenReturn(oneAdId);
String myString = adDataConnect.connectToData(1L);
long[] adIds = new long[]{1L};
List<AdData> outData = adDataAggregate.processInfo(adIds);
Assert.assertEquals(1, outData.size());
Assert.assertEquals(myString, oneAdId);
Assert.assertEquals(60, outData.get(0).getNumImpressions());
Assert.assertEquals(600, outData.get(0).getNumImpressions());
}
}
Спасибо вам большое. Это сработало отлично. – user2547177
Отлично! Примите мой ответ, чтобы получить кредит. Благодаря! –