java - 模拟方法的本地对象并从中读取
问题描述
我正在使用 powermckito 并尝试模拟本地对象并从中读取 API。我的实现类如下:
public class LogoutUtil {
public static void updateState() {
SrvcContext sc = new SrvcContext();
sc.setUserName("UserNAME");
}
}
我正在尝试模拟 SrvcContext 对象并通过调用 getter 来读取用户名。这是我的测试代码:
@Test
public void updateStateTest() {
SrvcContext svc = PowerMockito.mock(SrvcContext.class);
LogoutUtil.updateState();
try {
PowerMockito.whenNew(SrvcContext.class).withNoArguments().thenReturn(svc);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String userName = svc.getUserName(); //This gives null
Assert.assertEquals("UserNAME", userName);
}
任何帮助如何做到这一点。我无法更改 LogoutUtil 类。
谢谢
解决方案
问题是该方法LogoutUtil.updateState
是静态的,并且测试和模拟静态方法并不总是那么简单。但是使用 PowerMockito 你可以通过调用mockStatic
方法来做到这一点:看看这里:它应该可以解决你的问题
推荐阅读
- java - FileInputStream 没有缓冲,为什么 BufferedInputStream 更快?
- node.js - escape 或 unescape 不适用于特定的 unicode 字符串 - Node Js
- java - 发送邮件时丢失格式
- python - 在 Robot Framework 中处理 Windows 弹出窗口
- c - 为什么我不能比较字符串
- c# - 使用 REST API 发布非英文字母
- python - 为什么python中像素值的自动变化?
- php - php中2个数组所需的差异键
- docker-compose - docker-compose 启动 cmd 设置环境变量
- java - 使用java中的javax.json包访问Json对象中的多个Json对象