Mockito Mock-ответ, основанный на аргументе строки - PullRequest
0 голосов
/ 09 ноября 2018

Мне нужно смоделировать amazonS3.getObject (GetObjectRequest, File) из библиотеки com.amazonaws.services.s3, чтобы протестировать мой собственный метод, который получает файл из нее.

Мне нужен один тест, где запрошенный объект найден, и все в порядке, и один, где файл не найден в S3 bucked, и затем ReturnRet вернет ноль.

Итак, простой случай - это что-то вроде:

ObjectMetadata objectMetadata = new ObjectMetadata();

Mockito.lenient().when(amazonS3.getObject(any(GetObjectRequest.class), any(File.class))).thenReturn(objectMetadata);

Как мне продублировать и изменить это, чтобы обеспечить различный возврат в соответствии с вводом объекта?

В самой функции это то, что подается как GetObjectRequest:

GetObjectRequest getObjectRequest = new GetObjectRequest(this.getBucketName(), objectKey);

Так что нам нужно изменить any(GetObjectRequest.class) на что-то, что будет отличать объект, где objectKey (string) - «X», от другого вызова, где objectKey - «Y», и в этом случае я хочу вернуть null для полного тестирования моя функция.

Надеюсь, вопрос ясен?

1 Ответ

0 голосов
/ 10 ноября 2018

Надеюсь, я правильно понимаю.

Если это помогает, вы можете попробовать

when(amazonS3.getObject(any(GetObjectRequest.class),any(File.class)))
.thenReturn(objectMetadata)
.thenReturn(null); 

первый вызов должен вернуть ваши objectMetadata, второй нуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...