我编写了dynamoDB代码,用于存储项目列表。
mapper.batchSave(trafficSensorReadings)
这将返回。
List<FailedBatch>
我想嘲笑映射器。batchSave,然后返回一个失败的作业。我怎样才能实现它?我正在使用mockito和Junit。
我写了这样的东西。但是没有用。
when(dynamoDBMapper.batchSave(eq(List.class))).thenReturn(mock(List.class));
完整的示例如下
@Test
public void test() {
FailedBatch failedBatch = mock(FailedBatch.class);
List<FailedBatch> failedBatchList = new ArrayList<>();
failedBatchList.add(failedBatch);
DynamoDBMapper dynamoDBMapperMock = mock(DynamoDBMapper.class);
when(dynamoDBMapperMock.batchSave(any(List.class))).thenReturn(failedBatchList);
tested.testedMethodCall();
verify(dynamoDBMapperMock).batchSave(any(List.class));
}
首先,我认为您可能希望使用Mockito.any()而不是Mockito.eq()。
第二,我不明白你为什么要嘲笑这个列表。你可以创建一个,然后返回
// GIVEN
FailedBatch batch1 = /**/;
FailedBatch batch2 = /**/;
List<FailedBatch> failedBatchList = Lists.newArrayList(batch1, batch2);
// WHEN
when(dynamoDBMapper.batchSave(any(List.class))).thenReturn(failedBatchList);
Object someResult = yourFunctionTestCall();
// THEN
verify(someResult)...