mockito stubbing返回null

时间:2011-06-01 17:06:03

标签: java junit junit4 mockito

我使用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();

2 个答案:

答案 0 :(得分:7)

stub.callingmethod(request)的参数匹配器.thenReturn(响应)正在比较引用相等性。你想要一个更宽松的匹配器,我想是这样的:

stub.callingmethod(isA(ClassA.class)).thenReturn(response);

答案 1 :(得分:0)

确保您的ClassA实施了自己的equals,并确保其正确实施。