Java – spring rest simulation context path

I tried to set the context path for spring rest mocks using the following code snippet:

private mockmvc mockmvc;

@Before
public void setUp() {
    this.mockmvc = mockmvcBuilders.webAppContextSetup(this.context)
            .apply(documentationConfiguration(this.restDocumentation))
            .alwaysDo(document("{method-name}/{step}/",preprocessRequest(prettyPrint()),preprocessResponse(prettyPrint())))
            .build();
}

@Test
public void index() throws Exception {
    this.mockmvc.perform(get("/").contextPath("/api").accept(MediaTypes.HAL_JSON))
            .andExpect(status().isOk())
            .andExpect(jsonPath("_links.business-cases",is(notNullValue())));
}

But I received the following error:

java.lang.IllegalArgumentException: requestURI [/] does not start with contextPath [/api]

What's up? Can you specify a contextpath in a single location in your code, such as directly in the builder?

edit

Here is the controller

@RestController
@RequestMapping(value = "/business-case",produces = MediaType.APPLICATION_JSON_VALUE)
public class BusinessCaseController {
    private static final Logger LOG = LoggerFactory.getLogger(BusinessCaseController.class);

    private final BusinessCaseService businessCaseService;

    @Autowired
    public BusinessCaseController(BusinessCaseService businessCaseService) {
        this.businessCaseService = businessCaseService;
    }

    @Transactional(rollbackFor = Throwable.class,readOnly = true)
    @RequestMapping(value = "/{businessCaseId}",method = RequestMethod.GET)
    public BusinessCaseDTO getBusinessCase(@PathVariable("businessCaseId") Integer businessCaseId) {
        LOG.info("GET business-case for " + businessCaseId);
        return businessCaseService.findOne(businessCaseId);
    }
}

Solution

You need to include the context path in the path to be passed

If you have shown in the question, the context path is / API, and you want to / request / you need to pass / API / to get:

@Test
public void index() throws Exception {
    this.mockmvc.perform(get("/api/").contextPath("/api").accept(MediaTypes.HAL_JSON))
            .andExpect(status().isOk())
            .andExpect(jsonPath("_links.business-cases",is(notNullValue())));
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>