Ash*_*rma 5 java testing spring-boot mockmvc
<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>
Run Code Online (Sandbox Code Playgroud)
它总是给出空的主体:
<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>
Run Code Online (Sandbox Code Playgroud)
当我使用 TestRestTemplate 时它工作正常。但是,当我使用MockMvc和@MockBean时,它总是给出空输出。我也用过com.gargoylesoftware.htmlunit.WebClient。但是,这也带来了空虚的身体。我不知道发生了什么事。请帮忙。是版本问题还是我做错了什么?
春季启动版本:1.5.10
小智 -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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |