spring-boot - 使用 HttpURLConnection 使用 Mockito 进行单元测试
问题描述
我知道以前有人问过这个问题,我尝试遵循,但它仍然不适合我。我必须在 Mockito 中执行此操作。我对 Mockito 的了解是新手。
当我执行时,我得到了一个失败跟踪
org.mockito.exception.misusing.NullInsteadOfMockException:
不知道我缺少什么以及如何解决它。我已经搜索了几天,但我没有任何运气。
请任何帮助将不胜感激。
这是我在 Spring Boot 2 中使用 HTTPUrlConnection 进行外部调用的代码。它工作正常。
@Component
public class GetData {
@Value("{lookupUrl}
private String url;
public StringBuilder getData(String str) {
String httpUrl = url + str;
StringBuilder sb = new StringBuilder();
try {
URL link = new URL(url);
HttpURLConnection conn = (HttpURLConnection) link.openConnection();
InputStream is = conn.getInputStream();
InputStreamReader inputReader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(inputReader);
String line;
while ((line = br.readline()) != null {
sb.append(line);
}
br.close();
conn.disconnect();
}
catch(Exception e) {
e.getStatckTrace();
}
return sb;
}
}
// 这是我的单元测试
public class DataTest {
@Spy
GetData getdata;
@Mock
HttpURLConnection connection;
@Test
public void getDataTest() {
StringBuilder sb = new StringBuilder();
sb.append("test data");
try{
doReturn(connection).when(getdata).getTheData(any()); //this is where error raised
URL url = new URL("http://anyhost.com");
sb = getdata.getTheData(url.toString());
doReturn(sb).when(connection).getInputStream();
}
catch(Exception e) {
e.getStatckTrace();
}
assertTrue(sb.length() > 1);
}
}
解决方案
doReturn(connection).when(getdata).getTheData(any());
当 getData 应该返回 StringBuilder 时,如何让它返回连接。
你能尝试正确地提问吗?此代码有效
doReturn(sb).when(getdata).getData(any()); //this is where error raised
URL url = new URL("http://anyhost.com");
StringBuilder response = getdata.getData(url.toString());
假设您正在通过 init 或注释正确初始化模拟
推荐阅读
- python - SQLAlchemy bulk_insert_mappings 不返回主键
- c# - IdentityServer4 需要配置密钥材料但存在证书
- ios - 我该如何解决 Apple App Binary Rejected?
- mysql - MySQL转换为大写不起作用
- sql - PostgreSQL 用逗号分隔的整数将字符串拆分为逗号分隔的整数
- powershell - 在 Powershell 中合并 txt 文件时出现 UTF-8 编码问题
- java - Java反射从静态类调用嵌套方法
- python - 是否有任何正确的格式可以将上下文名称添加到 snmp 代理?
- c# - Net Core - 集成测试 - TestServer - 真实的http连接
- java - 在java中读取可扩展的arraylist