如何模拟@InjectMocks类中的方法
时间: 2024-02-17 16:07:49 浏览: 135
spock-injectmocks:Mockito 的 Spock 的 InjectMocks 替代品
在模拟@InjectMocks类中的方法时,可以使用Mockito框架的@Mock注解来模拟被@InjectMocks类依赖的类的行为。然后,使用@InjectMocks注解将被测试类注入到测试类中,使其能够使用模拟对象。接下来,就可以使用模拟对象来模拟@InjectMocks类中的方法的行为。
举个例子,如果我们有一个被@InjectMocks注解的类A,它依赖于另一个类B,我们可以这样模拟类B的行为:
```
public class B {
public int getValue() {
return 10;
}
}
public class A {
private B b;
public A(B b) {
this.b = b;
}
public int getResult() {
int value = b.getValue();
return value * 2;
}
}
public class ATest {
@Mock
private B b;
@InjectMocks
private A a;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetResult() {
Mockito.when(b.getValue()).thenReturn(5);
int result = a.getResult();
Assert.assertEquals(result, 10);
}
}
```
在这个例子中,我们使用@Mock注解来模拟类B的行为,然后使用@InjectMocks注解将类A注入到测试类中。在测试方法中,我们使用Mockito.when()来模拟类B的getValue()方法返回5,然后验证类A的getResult()方法是否正确地将其返回值乘以2。
阅读全文