java - Mockito 方法返回 null

标签 java spring unit-testing testng mockito

我查看了论坛,但找不到为什么会发生这种情况

我有

public class AImpl implements A{

   @Autowired
   B bImpl;

   protected void doSomething(){
      String s = "test";
      String d = b.permuteString(s);
      System.out.println(s.substring(1));
   }

}

public class BImpl implements B{
    public String permuateString(s){
     return s;
   }
}

在测试中我有:

@InjectMocks
AImpl aImpl;

@Mock
BImpl bImpl;

@Test
public void testCode(){
testCode(){
   aImpl.doSomething();
}
}

BImpl 中的方法permuateString 始终返回 null。我需要知道 permuteString() 的结果才能继续执行 doSomething。所以它不能为空

这是为什么?

我正在使用 Mockito

最佳答案

通过使用 @Mock 注释 BImpl 字段,您是在说实例本身应该是一个 mock。但是,您没有告诉 Mockito 在使用参数调用时模拟应该给出什么结果,因此 Mockito 使用其返回 null 的默认行为。

BImpl 是具有真实行为的真实类这一事实无关紧要。该字段不包含该类的实例;它包含模拟实例。

在您的测试方法中,在您调用 aImpl.doSomething() 之前,告诉 mockito 您期望它使用的行为:

when(bImpl.permuteString("test")).thenReturn("someOtherValue");

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

相关文章:

Spring @Cacheable 不工作-我的配置有什么问题?

java - 使用 Spring 注入(inject)模板化集

unit-testing - Clojure - 测试 Pedestal 路线

java - REST List<Entity> 返回导致错误

java - Groovy - 编写和格式化 excel 2010

java - 为什么在 junit 测试期间多次初始化 bean?

python - 保证不存在文件的单元测试 fixture

c# - 根据实时值进行或退出单元测试的正确方法

java - 如何获取给定键的值列表并将该值列表添加到新创建的列表中?

java - 无法使用 riak 进行映射缩减