<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引导版本:1.5.10
答案 0 :(得分:-1)
您的控制器执行customerService的方法。对?然后你必须存根该方法。
@Test
public void testMethod() throws Exception {
when(customerService.doSomething())
.thenReturn(mockResult); // you need to make this code
this.mockMvc.perform(get("/url"))
.andExpect(someThing);
}