【发布时间】:2018-07-10 19:17:27
【问题描述】:
<pre><code>
@RunWith(SpringRunner.class)
@WebMvcTest(CustomerController.class)
public class CustomerControllerMvcTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@MockBean
private ICustomerService customerService;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac)
.dispatchOptions(true).build();
}
@Test
public void getTaskByUserdId1() throws Exception {
String expectedOutput = "{\"id\":3,\"name\":\"vikas\"}";
this.mockMvc.perform(MockMvcRequestBuilders.get("/customer/get/vikas")
.accept(MediaType.APPLICATION_JSON_UTF8_VALUE))
.andExpect(status().isOk())
.andExpect(content().string(expectedOutput));
}
@Test
public void getTaskByUserdId2() throws Exception {
String expectedOutput = "{\"id\":3,\"name\":\"vikas\"}";
this.mockMvc.perform(get("/customer/get/vikas"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string(containsString(expectedOutput)));
}
}
</code> </pre>
它总是给出空的身体:
<pre>
<code>
MockHttpServletRequest:
HTTP Method = GET
Request URI = /customer/get/vikas
Parameters = {}
Headers = {}
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = null Redirected URL = null
Cookies = []
</code>
</pre>
当我使用 TestRestTemplate 时它工作正常。但是,当我使用 MockMvc 和 @MockBean 时,它总是给出空输出。我也用过com.gargoylesoftware.htmlunit.WebClient。但是,这也给出了空的身体。我不知道发生了什么。请帮忙。是版本问题还是我做错了什么?
Spring boot 版本:1.5.10
【问题讨论】:
标签: java spring-boot testing mockmvc