java - mockito stub 返回 null

标签 java junit junit4 mockito

我正在使用 mockito 作为模拟框架。我这里有一个场景,我的 when(abc.method()).thenReturn(value) 没有返回值,而是返回 null。

这是我的类(class)和测试的样子。

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 near boolean retrunVal = response.isXXX();

最佳答案

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

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

关于java - mockito stub 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205013/

相关文章:

java - 如何在纯Rhino对象模型中执行 "Object.defineProperty"?

java - 如何从 Java 的 EMV 智能卡读取 PAN

java - junit 3 中的类拆解?

java - 如何在使用 ANT 运行类或套件中的所有测试时打印当前正在执行的 JUnit 测试方法?

java - 在 spring-boot 2 中使用 gson 时返回 null

java - 为什么我不能在参数中使用小于 0 的数字来参数化 double java?

java - 获取 java.lang.IllegalArgumentException : wrong number of arguments error for below code snippet

spring - jUnit:找不到接口(interface) com.querydsl.core.types.Predicate 的主要或默认构造函数

java - 将 main/java 类添加到我在 intellij 中的 test/java 目录

selenium - WebDriver 中的 JUnit 格式与 WebDriver 支持