Dej*_*ell 3 java testng spring unit-testing 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;
}
}
Run Code Online (Sandbox Code Playgroud)
在测试中我有:
@InjectMocks
AImpl aImpl;
@Mock
BImpl bImpl;
@Test
public void testCode(){
testCode(){
aImpl.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
该方法permuateString从BImpl总是返回null.我需要知道permuteString()的结果才能继续执行doSomething.所以它不能为空
为什么?
我在用 Mockito
通过用BImpl字段注释@Mock,你说的是实例本身应该是一个模拟.但是,你没有告诉Mockito在使用参数调用时模拟应该给出什么结果,所以Mockito使用它返回null的默认行为.
这事实上BImpl是真正的行为真正的类是无关紧要的.该字段不包含该类的实例; 它包含一个mock的实例.
在您的测试方法中,在调用之前,请aImpl.doSomething()告诉mockito您希望它使用的行为:
when(bImpl.permuteString("test")).thenReturn("someOtherValue");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7607 次 |
| 最近记录: |