mokito有两层service依赖关系 怎么使用injectmocks
时间: 2024-01-31 22:04:38 浏览: 58
如果你有两个服务(service),其中一个(serviceA)依赖于另一个(serviceB)。你可以使用 Mockito 的 `@InjectMocks` 注解来自动将模拟对象注入到需要被测试的类中,而使用 `@Mock` 注解来创建需要模拟的对象。下面是一个示例:
```java
public class ServiceA {
private ServiceB serviceB;
public ServiceA(ServiceB serviceB) {
this.serviceB = serviceB;
}
public String doSomething() {
return serviceB.doSomethingElse();
}
}
public class ServiceB {
public String doSomethingElse() {
return "Hello World";
}
}
```
```java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class ServiceATest {
@Mock
private ServiceB serviceB;
@InjectMocks
private ServiceA serviceA;
@Test
public void testDoSomething() {
when(serviceB.doSomethingElse()).thenReturn("Mocked Hello World");
String result = serviceA.doSomething();
assertEquals(result, "Mocked Hello World");
}
}
```
在上面的示例中,我们通过 `@Mock` 注解创建了一个模拟对象(serviceB),并使用 `@InjectMocks` 注解将其注入到需要测试的类(serviceA)中。在测试方法中,我们通过 `when` 和 `thenReturn` 方法定义了模拟对象的行为,并验证了 `ServiceA` 类的 `doSomething` 方法是否按预期工作。
阅读全文