我已使用传输管理器生成器从 S3 存储桶成功下载目录。代码如下。
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);
请帮我编写单元测试!
不要嘲笑你不拥有的东西。
嘲笑别人的代码会做出你无法保证的假设,特别是如果你升级了你正在使用的库。
您可以改为执行以下几项操作:
- 使用 WireMock 等工具创建模拟 S3,并使用它来创建集成测试。此工具允许您记录/播放与服务器的 HTTP 交互。如果您升级,这最终仍可能中断。
- 使用针对真实 S3 与真实 Amazon 客户端运行的合约测试,以查看它是否实际有效。我会把它放在一个单独的版本中,偶尔运行它,以确保你仍然兼容。
您可以(并且可能应该(同时使用两者。