我查看了论坛,但找不到为什么会发生这种情况
我有
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/