0

我已经使用传输管理器构建器从 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); 

请帮助我编写单元测试!

4

1 回答 1

1

不要嘲笑你不拥有的东西

模拟别人的代码会做出你无法保证的假设,特别是如果你升级了你正在使用的库。

您可以做几件事:

  1. 使用诸如WireMock 之类的工具来创建一个模拟 S3,并使用它来创建您的集成测试。此工具允许您记录/播放与服务器的 HTTP 交互。如果您升级,这最终仍然可能会中断。
  2. 使用在真实 Amazon 客户端上针对真实 S3 运行的合同测试,以查看它是否确实有效。我会把它放在一个单独的版本中,偶尔运行它以确保你仍然兼容。

您可以(并且可能应该)同时使用两者。

于 2018-08-12T13:14:57.833 回答