如何测试我的控制器以在 Kotlin 中抛出异常?

时间:2021-03-25 16:36:48

标签: spring kotlin junit controller restapi

所以我有一个带有一个 GET 方法的控制器。我需要测试一下。当我使用不正确的国家/地区iso 代码写入URL 请求时,它会向我抛出一个自定义异常。那么我该如何测试呢?

所以这里的 'UA' 是不正确的参数

@Test
fun check_for_incorrect_iso_code() {
    mockMvc.perform(get("/countries/UA"))
        .andDo(print())
        .andExpect(status().is4xxClientError)
}

测试工作正常,但我需要扩展它并检查它是否抛出我的自定义异常 - 例如 'InvalidIsoCodeException'

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您的 Java 代码正在抛出 InvalidIsoCodeException,但您的服务器/控制器不能抛出异常。相反,它向客户端发送回 HTTP 响应。 InvalidIsoCodeException 由 Spring 映射到特定响应。您已经在使用 .andExpect(status().is4xxClientError()) 检查响应的状态。如果您想更具体,还可以验证响应的正文。

如果你想测试异常,那么你必须像没有 MockMVC 的普通 Java 类一样测试你的控制器。

相关问题