我使用mockito作为模拟框架。我有一个scenerio,我的时间(abc.method())。thenReturn(value)不返回值,而是返回null。
以下是我的课程和测试的样子。
public class foo(){
public boolean method(String userName) throws Exception {
ClassA request = new ClassA();
request.setAbc(userName);
ClassB response = new ClassB();
try {
response = stub.callingmethod(request);
} catch (Exception e) {
}
boolean returnVal = response.isXXX();
return returnVal;
}
现在接下来就是测试
@Test
public void testmethod() throws Exception{
//arrange
String userName = "UserName";
ClassA request = new ClassA();
ClassB response = new ClassB();
response.setXXX(true);
when(stub.callingmethod(request)).thenReturn(response);
//act
boolean result = fooinstance.lockLogin(userName);
//assert
assertTrue(result);
}
stub使用mockito进行模拟,即使用@Mock。测试在类foo中抛出NullPointerException,接近boolean retrunVal = response.isXXX();
答案 0 :(得分:7)
stub.callingmethod(request)的参数匹配器.thenReturn(响应)正在比较引用相等性。你想要一个更宽松的匹配器,我想是这样的:
stub.callingmethod(isA(ClassA.class)).thenReturn(response);
答案 1 :(得分:0)
确保您的ClassA
实施了自己的equals
,并确保其正确实施。