Java Spock Spring通过构造函数注入mock和bean
我正在寻找如何在单个构造函数中注入bean和mock的方法Java Spock Spring通过构造函数注入mock和bean,java,spring,unit-testing,dependency-injection,spock,Java,Spring,Unit Testing,Dependency Injection,Spock,我正在寻找如何在单个构造函数中注入bean和mock的方法 @Service public class SomeService { private EndpointUrlProvider endpointUrlProvider; private RestTemplate restTemplate; @Autowired public SomeService(EndpointUrlProvider endpointUrlProvider, RestTemplate restTemplate){
@Service
public class SomeService {
private EndpointUrlProvider endpointUrlProvider;
private RestTemplate restTemplate;
@Autowired
public SomeService(EndpointUrlProvider endpointUrlProvider, RestTemplate restTemplate){
this.endpointUrlProvider = endpointUrlProvider;
this.restTemplate = restTemplate;
}
测试:
当我启动测试时,someService中的endpointUrlProvider为null。我做错了什么?测试这一点的最佳方法是什么?据我所知,您正在尝试进行部分模拟。要注入Springbean,首先需要
TestContextManager
。因此,使用SpringRunner
或SpringJUnit4ClassRunner
运行测试。这应该可以完成以下工作:
@RunWith(SpringRunner.class)
public class SomeServiceTest {
@Autowired
private EndpointUrlProvider endpointUrlProvider;
@Before
public setUp() {
RestTemplate restTemplate = mock(RestTemplate.class);
SomeService someService = new SomeService(endpointUrlProvider, restTemplate);
}
}
据我所知,你是在试图进行部分嘲弄。要注入Springbean,首先需要
TestContextManager
。因此,使用SpringRunner
或SpringJUnit4ClassRunner
运行测试。这应该可以完成以下工作:
@RunWith(SpringRunner.class)
public class SomeServiceTest {
@Autowired
private EndpointUrlProvider endpointUrlProvider;
@Before
public setUp() {
RestTemplate restTemplate = mock(RestTemplate.class);
SomeService someService = new SomeService(endpointUrlProvider, restTemplate);
}
}
EndpointUrlProvider
应该是模拟的还是真实的bean?EndpointUrlProvider应该是模拟的还是真实的bean?