Spring 如何测试控制器在Kotlin中引发异常?

Spring 如何测试控制器在Kotlin中引发异常?,spring,kotlin,junit,controller,restapi,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().is4xxClientE

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

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

@Test
fun check_for_incorrect_iso_code() {
    mockMvc.perform(get("/countries/UA"))
        .andDo(print())
        .andExpect(status().is4xxClientError)
}
测试正在工作,但我需要扩展它并检查它是否抛出我的自定义异常-
“InvalidIsoCodeException”


谢谢您的回答。

您的Java代码正在抛出一个
无效代码异常
,但是您的服务器/控制器不能抛出异常。相反,它将HTTP响应发送回客户端。
InvalidIsoCodeException
由Spring映射到特定响应。您已经在使用
和expect(status().is4xxclientorror())
检查响应的状态。如果希望更具体,还可以验证响应的主体


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

您的Java代码正在抛出一个
无效的SoCodeException
,但您的服务器/控制器无法抛出异常。相反,它将HTTP响应发送回客户端。
InvalidIsoCodeException
由Spring映射到特定响应。您已经在使用
和expect(status().is4xxclientorror())
检查响应的状态。如果希望更具体,还可以验证响应的主体


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

非常感谢您提供了良好且信息丰富的答案@巴拉诺夫如果这完全回答了你的问题,你可以接受。看到了。非常感谢你的好的和信息丰富的答案@巴拉诺夫如果这完全回答了你的问题,你可以接受。看见