java – Mockito方法返回null

我查看了论坛,但无法找到为什么会这样

我有

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字段,您说实例本身应该是一个模拟.但是,你没有告诉Mockito在使用参数调用时模拟应该给出什么结果,所以Mockito使用它返回null的默认行为.

BImpl是一个真实行为的真实类是无关紧要的.该字段不包含该类的实例;它包含一个mock的实例.

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

when(bImpl.permuteString("test")).thenReturn("someOtherValue");
上一篇:java – 测试返回类型为void的方法


下一篇:java – 如何对文件作为参数的方法进行单元测试和模拟