Я пишу тестовые примеры интеграции с использованием MockMvc для тестирования моего REST API.mock non spring управляемый объект во время тестирования интеграции с использованием mockMVC
В рамках моей реализации RESTAPI я внутренне использую RestTemplate (не непосредственно из контроллера, а из класса util, который вызывает контроллер), чтобы вызвать сторонний REST API. The RestTemplate, который я использую (для создания стороннего API-интерфейса), не является управляемым bean-компонентом, вместо этого я создаю его как RestTemplate restTemplate = new RestTemplate();
Я хочу высмеять вызов restTemplate (postForEntity).
Я пытаюсь ниже подход:
Мой тест class-
@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());
}
В моем прикладном контексте У меня есть fo llowing макет определяется:
<bean id="restTemplate" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="org.springframework.web.client.RestTemplate" /> </bean>
Но когда я исполню мой тестовый СЛУЧАЙ RestTemplate становится издевались, но когда вызов RestTemplate происходит во время выполнения фактического resttemplate вызывается вместо моего макете resttemplate.
Пожалуйста, предложите, как я могу издеваться над RestTemplate для моего тестового примера.
Можете ли вы поделиться своим тест-applicationContext.xml –
Hi Tharsan, это мой тест-applicationContext.xml \t <контекст <- - компонент сканирования!>: Компонент сканирования базовый пакет = "mybasepackage "/> \t <контекст: annotation-config /> \t \t \t <конструктор-Arg значение = "org.springframework.web.client.RestTemplate"/> \t \t –
Ashwini