【发布时间】:2021-07-17 03:20:59
【问题描述】:
我有几个方法可以发送 HTTP 请求以将输入流上传到 S3。如果对 S3 的请求失败,则会有一个重试策略来尝试在某些状态码上再次发送请求。由于我们不能保证输入流没有从之前的请求中被部分读取,我们必须在重试时提供一个新的输入流。
包含输入流的对象类如下所示:
public class CustomRequest {
private InputStream stream;
private InputStreamProvider inputStreamProvider;
}
其中 InputStreamProvider 是一个功能接口,用于在重试的情况下提供全新的输入流,看起来像这样:
public interface InputStreamProvider {
InputStream getInputStream();
}
每个 CustomRequest 可以有一个 InputStream,这意味着我们不支持重试,也可以有一个 InputStreamProvider,我们支持重试。
我的问题是如何进行单元测试以确保在使用 InputStreamProvider.getInputStream() 重试时实际上提供了新的输入流?
【问题讨论】:
-
如果您在测试数据流时需要帮助,仅仅接口是不够的。您需要发布要测试的代码。
标签: java junit inputstream retry-logic