gpt4 book ai didi

java - 如何从 jax-rs 模拟 StreamingOutput

转载 作者:行者123 更新时间:2023-12-02 11:11:55 24 4
gpt4 key购买 nike

我有一个类,它将视频作为 mp4 文件发送给用户(Http 请求/响应)我想用主要逻辑模拟方法来测试它。我的代码

public StreamingOutput videoAsStream(final String videoUrl) {
try {
final URL url = new URL(videoUrl);
return output -> {
try(final InputStream inputStream = url.openConnection().getInputStream()){
IOUtils.copy(inputStream,output);
output.close();
}
};
} catch (final MalformedURLException e) {
log.error("Url exception for url {}",videoUrl);
throw new UncheckedIOException(e);
}
}

我该如何模拟这个逻辑?

最佳答案

问题是,该 URL 是最终的,因此您必须至少使用 Mockito 2 来模拟它。如果您准备好这样做,我看到两种可能性:

a) 将 url 提供给方法而不是字符串,从而允许您在其中放置模拟的 url。这将是最简单的方法。然后,您还可以创建第二种便捷方法,从字符串创建所述 URL。这两种方法更容易测试,因为它们的范围更小。

b) 将 final URL url = new URL(videoUrl); 部分提取到一个新类中,例如 URL Factory,然后模拟它以在测试中返回模拟的 URL 对象。

一旦您在方法中生成带有“new”的内容,此方法就会变得更难测试,因为您现在无法将此测试与此对象生成分开。

关于java - 如何从 jax-rs 模拟 StreamingOutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com