我的控制器看起来像这样
@GetMapping("/networks/{networkId}")
public Resource<Network> getNetwork(
@PathVariable("networkId") UUID id,
HttpServletRequest request) {
Resource<Network> network = networkClient.getNetwork(id);
network.removeLinks();
network.add(LinkHelper.getNetworkObjectLinkArray(request, id));
return network;
}
测试看起来像这样
@Test
public void getNetwork() throws Exception {
Resource<Network> networkResource = createSampleNetwork(organizationId, "Test Network 01");
MockHttpServletRequest mockedRequest = new MockHttpServletRequest(context.getServletContext());
UUID networkId = HalParser.parseUUIDFromLink(networkResource.getId());
when(networkRestController.getNetwork(networkId, mockedRequest))
.thenReturn(networkResource);
mockMvc.perform(get("/networks/" + HalParser.parseUUIDFromLink(networkResource.getId()))
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print())
.andDo(document.document(
responseFields(
fieldWithPath("name").description("The network's name"),
fieldWithPath("caName").description("The network's ca name"),
fieldWithPath("productFamily").description("The network's product family"),
fieldWithPath("productVersion").description("The version of the network core software"),
fieldWithPath("status").description("Provisioning status of the network"),
fieldWithPath("createdAt").description("Record creation time"),
fieldWithPath("updatedAt").description("Record last modification time"),
fieldWithPath("_links").description("<<resources-index-links,Links>> to other resources")
)
));
}
问题是我收到了错误
"Method threw 'org.mockito.exceptions.misusing.UnfinishedStubbingException' exception. Cannot evaluate MyRestController$$EnhancerByMockitoWithCGLIB$$6fa8dd17.toString()"
如果我从控制器方法中删除HttpServletRequest并进行测试,这是有效的。
答案 0 :(得分:0)
MockMvcRequestBuilders
有两种方法
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... uriVars)
public static MockHttpServletRequestBuilder get(URI uri) {
您可以使用第一个符合您的要求,例如
@Mock
HttpServletRequest req;
mockMvc.perform(get("/networks/" + HalParser.parseUUIDFromLink(networkResource.getId()), req)
.accept(MediaType.APPLICATION_JSON))
.......
当然要考虑几件事情
@Mock (MockitoAnnotations.initMocks(this))
HttpServletRequest