use*_*993 12 java junit mockito
我正在尝试createInstanceB()使用Mockito.when()以及模拟方法doReturn()模拟方法。这总是调用真实方法。
例如:
Class A {
public B createInstanceB(any, any) {
B b = new B();
b.api();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用下面的代码
import org.mockito.Mockito;
import static org.mockito.Mockito.*;
Class ATest {
A a;
B b;
@Before
Public void setup{
a = A.getInstance();
b = mock(B.class);
}
@Test
public void testCreateInstanceB(){
Mockito.when(a.createInstanceB(any(),any()).thenReturn(b);
...
}
}
Run Code Online (Sandbox Code Playgroud)
我doReturn(mock)也尝试过。
代码的问题在于它调用的是Mockito.when()的实际实例A,而不是模拟。Mockito.when()只适用于模拟对象,不适用于真实对象。
如果您需要在“真实”对象上“模拟”(存根)方法,请考虑使用Mockito.spy(). 有关使用“间谍”的更多信息,请参阅这篇文章。
像这样的东西将接近你想要的:
Class ATest{
A a ;
A aSpy;
B b;
@Before
Public void setup{
a = A.getInstance();
aSpy = Mockito.spy(a);
b = mock(B.class);
}
@Test
public void testCreateInstanceB(){
Mockito.when(aSpy.createInstanceB(any(),any()).thenReturn(b);
...
}
Run Code Online (Sandbox Code Playgroud)
您需要在测试代码中使用aSpy, 而不是。a
| 归档时间: |
|
| 查看次数: |
37845 次 |
| 最近记录: |