![](/img/trans.png)
[英]How autowire a repository in an integration test with Spring Boot?
[英]Spring boot integration test injecting mock object via autowire
我正在使用基于Java配置的Spring Boot。 我有以下课程结构
@Service
public class Service implements IService{
@autowire
private IProcessor processor;
public void perform(Parameter param){
processor.process(param);
}
}
@Service
public class Processor implements IProcessor {
@autowire
private ProxyFactory factory;
public void process(Parameter param){
final ExternalSysProxy proxy = factory.get(param.getValue(), param.getId());
proxy.call();
}
}
@Repository
public class ProxyFactory {
public Proxy get(String value, String id){
final ExternalSysProxy proxy = new proxy(value, id);
return proxy;
}
}
此处的代理对象将调用外部系统。 我想通过模拟代理对象来编写集成测试。 您能否给我一些指导,说明如何在此结构中注入模拟代理对象。
您可以模拟ProxyFactory并在调用ProxyFactory.get(String value,String id)时返回Proxy的模拟
我喜欢在单元测试中使用Mockito:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ProcessorTest {
@InjectMocks
private Processor processor;
@Mock
private ProxyFactory proxyFactoryMock;
@Mock
private Proxy proxyMock;
@Test
public void myTest() {
Mockito.when(proxyFactoryMock.get("value", "id")).thenReturn(proxyMock);
processor.process(new Parameter("value", "id"));
Mockito.verify(proxyMock, Mockito.times(1)).call();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.