Тест контроллера Springboot не обрабатывает исключение - PullRequest
0 голосов
/ 25 октября 2018

Я новичок в SpringBoot, и прошло уже некоторое время с работы с SpringMVC, так что, скорее всего, я упускаю что-то очевидное.Мой тест вызывает контроллер, и контроллер выдает исключение IllegalArgumentException, как я и собирался.Тем не менее, тест не справляется с этим.Вместо этого это терпит неудачу, а не проходит, как я ожидал.Вызывая curl, я вижу ожидаемый ответ.

Мой тест:

    @Test
    void throwExceptionWhenMazeIsInvalid() {
        def encodedMaze = java.net.URLEncoder.encode("""#
##########
""", "UTF-8")

        mvc.perform(MockMvcRequestBuilders.get("/solve?maze=${encodedMaze}").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().is(500))
//                .andDo(MockMvcResultHandlers.print())
                .andExpect(content().string("The maze is improperly formatted."))
                .andDo(print())
//                .andReturn()
    }

Мой тестируемый метод:

@RestController
class MazeController {

    @RequestMapping(value = "/solve", method = RequestMethod.GET, produces = "application/json")
    String solve(@RequestParam("maze") String layout){
        println "MazeController.solve(${layout})"

        String decoded = java.net.URLDecoder.decode(layout, "UTF-8")

        if (!MazeValidator.isValid(decoded)) {
            throw new IllegalArgumentException("The maze is improperly formatted.")
        }

        String expectedMaze = """##########
#A@@.#...#
#.#@##.#.#
#.#@##.#.#
#.#@@@@#B#
#.#.##@#@#
#....#@@@#
##########
"""


        JsonBuilder json = new JsonBuilder()
//        json { message decoded }
        json { message expectedMaze }

        println "============= RETURNING response"
        return json.toString()
    }
}

Мой curl:

> curl localhost:8080/solve
{"timestamp":"2018-10-24T21:45:19.025+0000","status":500,"error":"Internal Server Error","message":"The maze is improperly formatted.","path":"/solve"}

1 Ответ

0 голосов
/ 25 октября 2018

Вы пробовали setHandlerExceptionResolvers для вашего смоделированного mvc?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...