MockMvc를 사용하여 통합 테스트 케이스를 작성하여 REST API를 테스트하고 있습니다.mockMVC를 사용하여 통합 테스트를 수행하는 동안 비 스프링 관리 객체를 모의 처리합니다.
내 RESTAPI 구현 내에서 내부적으로 RestTemplate (컨트롤러에서 직접이 아니라 컨트롤러가 호출하는 util 클래스 내에서)를 사용하여 타사 REST API를 호출합니다. 내가 사용하는 RestTemplate (제 3 자 휴식 API를 만들기 위해) 대신 스프링 관리 빈이 아니다. RestTemplate restTemplate = new RestTemplate();
restTemplate 호출 (postForEntity)을 조롱하고 싶습니다.
나는 아래의 방법을 시도하고있다 :
내 테스트 클래스 -
@ContextConfiguration(locations = {
"classpath:test-applicationContext.xml"
})
@WebAppConfiguration
공용 클래스 MockMVCTest 내 응용 문맥에서 {
private MockMvc mockMvc;
private RestTemplate restTemplate
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setUp() {
if (!initalized) {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
restTemplate = (RestTemplate)webApplicationContext.getBean("restTemplate");
}
@Test
public void demo() throws Exception {
when(
restTemplate.postForEntity(
eq("thirdpartyuri"),
any(HttpEntity.class),
eq(MyClass.class))).thenReturn(myresponse);
mockMvc.perform(
post("uriExposedbyme")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(MY_PAYLOAD)).andExpect(status().isOk());
}
나는
<bean id="restTemplate" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="org.springframework.web.client.RestTemplate" /> </bean>
을하지만 내 테스트 케이스를 실행할 때 RestTemplate 조롱지고 있지만 RestTemplate에 대한 호출이 실행 중에 발생하면 실제 resttemplate 대신 내 모의 resttemplate의 호출됩니다 llowing 모의 정의.
내 테스트 케이스에 RestTemplate을 조롱 할 수있는 방법을 제안하십시오.
당신이 당신의 시험 applicationContext.xml –
안녕 Tharsan를 공유 할 수이 내 시험 applicationContext.xml이다 "/> \t \t \t \t <생성자 인수 값 ="org.springframework.web.client.RestTemplate "> \t \t –
Ashwini