Я отослал ответы на Mocking Объекты, созданные внутри метода Тестируемый , Как смоделировать объекты, созданные внутри метода? и другие вопросы в сети, но не могу понять, почему мое решение не работает.
Мой метод тестирования:
private AmazonS3 s3client;
public int getBucketFileCount(String bucketNameForJsons) {
if (s3client.doesBucketExistV2(bucketNameForJsons)) {
log.info("Bucket name is not available.");
return 0;
}
ObjectListing listing = s3client.listObjects(bucketNameForJsons);
List<S3ObjectSummary> objectListing = listing.getObjectSummaries();
log.info("Counting s3client files");
return objectListing.size();
}
Тестовый пример, который я написал:
@Mock
private AmazonS3 s3clientMock;
@Mock
private ObjectListing listingMock;
private final String SAMPLE_BUCKET = "SAMPLE_BUCKET";
@InjectMocks
private Accessor accessor;
@Test
public void testGetBucketFileCount() {
s3clientMock = Mockito.mock(AmazonS3.class);
listingMock = Mockito.mock(ObjectListing.class);
//PowerMockito.when(s3clientMock.listObjects(anyString())).thenReturn(listingMock);
//PowerMockito.doReturn(listingMock).when(s3clientMock).listObjects(anyString());
//PowerMockito.when(s3clientMock.listObjects(Matchers.any(String.class))).thenReturn(listingMock);
List<S3ObjectSummary> objectListing = new ArrayList<>();
S3ObjectSummary objectSummary1 = Mockito.mock(S3ObjectSummary.class);
S3ObjectSummary objectSummary2 = Mockito.mock(S3ObjectSummary.class);
objectListing.add(objectSummary1);
objectListing.add(objectSummary2);
Mockito.doReturn(objectListing).when(listingMock).getObjectSummaries();
int actualSize = accessor.getBucketFileCount(SAMPLE_BUCKET);
//Assert.assertNotEquals(actualSize, EXPECTED_SIZE);
}
Я пробовал издеваться ObjectListing listing = s3client.listObjects(bucketNameForJsons);
следующими способами:
PowerMockito.when(s3clientMock.listObjects(anyString())).thenReturn(listingMock);
PowerMockito.doReturn(listingMock).when(s3clientMock).listObjects(anyString());
PowerMockito.when(s3clientMock.listObjects(Matchers.any(String.class))).thenReturn(listingMock);
Однако значение, которое я получаю для ObjectListing listing = s3client.listObjects(bucketNameForJsons)
, все еще равно нулю.
Как мне получить значение listMock?
Спасибо.