Интеграционный тест для каталога загрузки менеджера передачи из S3Bucket
Я успешно загрузил каталог из S3 Bucket с помощью диспетчера передачи. Код приведен ниже.
TransferManager transferManager =
TransferManagerBuilder.standard().withS3Client(client).build();
MultipleFileDownload download =
transferManager.downloadDirectory(bname, key, destfile);
Сейчас я пытаюсь написать тест на то же самое. Я издевался над кодом Amazon s3Client ниже.
AmazonS3 client = Mockito.mock(AmazonS3.class);
В исключении нулевого указателя
transferManager.downloadDirectory(bname, key, destfile);
Пожалуйста, помогите мне в написании модульного теста!
1 ответ
Не смейся над тем, что тебе не принадлежит.
Насмешка над чужим кодом делает предположения, которые вы не можете гарантировать, особенно если вы когда-либо обновляете используемую библиотеку.
Вместо этого вы можете сделать несколько вещей:
- Используйте такой инструмент, как WireMock, чтобы создать макет S3, и используйте его для создания интеграционного теста. Этот инструмент позволяет записывать / воспроизводить HTTP-взаимодействия с сервером. Это все еще может сломаться в конце концов, если вы обновитесь.
- Используйте контрактный тест, который работает на реальном S3 с настоящим клиентом Amazon, чтобы убедиться, что он действительно работает. Я поместил бы это в отдельную сборку и иногда запускал ее, чтобы убедиться, что вы все еще совместимы.
Вы могли (и, вероятно, должны) использовать оба.