Интеграционный тест для каталога загрузки менеджера передачи из 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 ответ

Не смейся над тем, что тебе не принадлежит.

Насмешка над чужим кодом делает предположения, которые вы не можете гарантировать, особенно если вы когда-либо обновляете используемую библиотеку.

Вместо этого вы можете сделать несколько вещей:

  1. Используйте такой инструмент, как WireMock, чтобы создать макет S3, и используйте его для создания интеграционного теста. Этот инструмент позволяет записывать / воспроизводить HTTP-взаимодействия с сервером. Это все еще может сломаться в конце концов, если вы обновитесь.
  2. Используйте контрактный тест, который работает на реальном S3 с настоящим клиентом Amazon, чтобы убедиться, что он действительно работает. Я поместил бы это в отдельную сборку и иногда запускал ее, чтобы убедиться, что вы все еще совместимы.

Вы могли (и, вероятно, должны) использовать оба.

Другие вопросы по тегам