1
我有一個程序,我想模擬使用Mockito的數據。
我的主要計劃是AdDataAggregate
,它叫AdDataConnect
。
AdDataConnect
調用一個API,該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
太棒了!請接受我的回答,以便獲得信用。謝謝! –