【发布时间】:2020-01-03 14:14:53
【问题描述】:
我正在 Spring Mvc 上使用 Mockito 进行 JUnit 测试。测试使用 @InjectMock 和 @Mock 以及 when(method(..)).thenReturn(X)。问题是如何 @Mock 实例中的 @Inject 方法?
我尝试创建两个实例,例如 @InjectMocks Foo fooInstance 和@Mock Foo fooInstanceMock; 我的思维方式是区分注入什么实例和模拟什么。 我也尝试将 Spy 与 InjectMocks 一起使用,但它返回异常。
实际类语法-
class Foo {
public X(..) {
...
Y(...); // method call to Y
...
}
public Y(..) {
...
}
}
测试语法 -
public class FooTest {
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@InjectMocks
Foo fooInstance;
@Mock
Foo fooInstanceMock;
@Test
public void xTest{
when(fooInstanceMock.Y(..)).thenReturn(true);
Boolean result = fooInstance.X(25);
Assert.assertTrue(result == true)
}
}
我除了输出为真,然后返回真,但因为它认为它是一个 injectMock 并进入实现。
【问题讨论】:
标签: java unit-testing spring-mvc mockito