我正在开发基于spring的项目,并使用JUnit+Mockito编写单元测试用例。当将布尔值存根到同一个测试类的私有方法时,我面临一个问题(在将访问级别更改为public后,我仍然未能存根布尔值)。
下面的代码片段显示了同样问题的模拟
class ABC {
public String method1(User userObj){
String result = "";
if(!isValidUser(userObj.getSessionID())){
return "InvalidUser";
} else {
// execute some logic
}
return result;
}
private boolean isValidUser(String sessionId) {
// Here it calls some other class to validate the user
if (sessionId == null || UserSessionPool.getInstance().getSessionUser(sessionId) == null) {
return false;
} else {
return true;
}
}
}
在这里,我想为method1()编写一个测试用例。在类ABC中,我有一个名为IsValidUser()
的方法,它通过查看一个全局会话池来帮助识别会话中的用户,该会话池保存所有登录的使用过的详细信息,即usersessionpool.getInstance().getsessionUser(sessionId)
。
在测试method1()时,当测试控制器触发ISValidUser(userobj.getsessionID())
时,我希望从ISValidUser()
方法返回true
,以便继续测试实现逻辑的其余部分。
PowerMockito.doNothing().when(spyed_ABC_ClassObject, "isValidUser", true);
PowerMockito.doReturn(true).when(cntrl, "isValidUser", Mockito.anyString());
Whitebox.invokeMethod(spyed_ABC_ClassObject, "isValidUser", Mockito.anyString());
when(spyed_ABC_ClassObject.isValidUser(Mockito.anyString())).thenReturn(true);
或
Mockito.doNothing().when(spyed_ABC_ClassObject).isValidUser(Mockito.anyString());
你能试试这个吗。
@Before
public void setUp() {
UserSessionPool mockConnectionPool = Mockito.mock(UserSessionPool.class);
}
@Test
public void testName() throws Exception {
//given
PowerMockito.mockStatic(UserSessionPool.class);
BDDMockito.given(UserSessionPool.getInstance()(...)).willReturn(mockConnectionPool);
Mockito.when(mockConnectionPool.getSessionUser(Mockito.anylong())).thenReturn(something);
//then
PowerMockito.verifyStatic();
}
希望这能有所帮助。快乐编码!
场景: 我正在使用独立设置测试Spring MVC控制器。 控制器从请求中的JSON对象获取参数。它在将JSON对象转换成java对象后调用一个服务。该服务使用JPA将其保存到DB,然后更新实体的Id字段并返回给控制器。在将实体转换成JSON之后,控制器将JSON响应返回给调用者。 我已经在我的测试类中模拟了该服务,并使用@InjectMocks注入到控制器中 模拟服务无法访问JPA实体的私有se
如果不使用第三方的代码托管服务,而是要自己在服务器上建一个网上可访问的私有代码仓库, 你有几种选择: 通过SSH协议来访问仓库 通常最简单的办法是通ssh协议访问Git(Git Over SSH). 如果你在一台机器上有了一个ssh帐号, 你只要把“git祼仓库"放到任何一个可以通过ssh访问的目录, 然后可以像ssh登录一样简单的使用它. 假设你现在有一个仓库,并且你要把它建成可以在网上可访问
我有以下代码 我对嘲笑不熟悉。我有以下疑问。我正在尝试测试公共方法。 我是否可以断言私有变量workDone的值? 是否可以验证超类中的方法调用? 如何在方法中模拟私有方法调用?
我有一个带有私有属性的类,它是一个向量。做getter函数的最佳方法是什么? 返回整个向量:
问题内容: 考虑以下代码: 编译器抱怨正在尝试对行为进行存根的行。关于如何使用存根方法返回带有有界通配符的类型的任何指针? 问题答案: 您也可以为此使用非类型安全方法doReturn, 正如在Mockito的Google组中讨论的那样。 尽管它比起来简单,但再次请注意,它不是类型安全的。如果您担心类型安全,那么米尔豪斯的答案是正确的。 额外细节 要明确的是,这是观察到的编译器错误, 我相信编译器已
我有一个家庭作业,我应该写几个方法(例如,提示客户输入汽车类型并返回有效汽车类型的方法),然后我的程序应该显示汽车类型,租车天数,额外费用等。这是老师想让我写的第一种方法, 如何打印出此方法的返回值?我应该添加系统吗?(“汽车类型是...部分在提示为汽车类型()?