在Spring中测试控制器时要检查什么

在Spring中测试控制器时要检查什么,spring,spring-mvc,testing,controller,Spring,Spring Mvc,Testing,Controller,我正在使用MockMvc测试简单spring应用程序中的控制器。这是我第一次尝试做测试。根据我找到的资源,我成功地运行了我的测试,但我不确定应该检查哪些响应。“我的控制器”仅返回要渲染的视图的名称: 索引页(包含菜单栏和欢迎文本)、产品页(包含菜单栏和产品的空表)和关于页(同样是菜单栏和一些关于作者的信息)。 测试如下所示: mockMvc.perform(get("/myviews")) .andExpect(status().isOk()) .andExpect(vi

我正在使用MockMvc测试简单spring应用程序中的控制器。这是我第一次尝试做测试。根据我找到的资源,我成功地运行了我的测试,但我不确定应该检查哪些响应。“我的控制器”仅返回要渲染的视图的名称: 索引页(包含菜单栏和欢迎文本)、产品页(包含菜单栏和产品的空表)和关于页(同样是菜单栏和一些关于作者的信息)。 测试如下所示:

    mockMvc.perform(get("/myviews"))
    .andExpect(status().isOk())
    .andExpect(view().name("myviewsnames"))
    .andExpect(forwardedUrl("/WEB-INF/jsp/myviewsjsps.jsp"));
但基于MockMvcResultMatchers文档
我看到了很多其他的匹配选项。还有什么,为什么我应该检查我的测试?谢谢。

实际上,MockMvc是测试RESTful web服务的一种很好的方法,您可以根据响应的标题、状态代码和响应正文来测试响应。在您的用例中,您可以根据一些请求条件(如果有的话)测试视图名称。

您可能还需要测试异常处理。SpringMVC控制器可以将服务层抛出的异常转换为HTTP状态(例如,错误请求、未授权、未找到等)。不过,这对Rest控制器来说可能更有意义。谢谢。稍后我也将实现REST控制器和测试。但我的意思是,即使我没有修改它,测试(比如)标题是否有意义?或者我应该检查是否有适当的处理程序处理了我的请求?在使用REST控制器的示例中,我总是看到检查在测试期间是否没有调用模拟对象的其他方法。为什么我们需要测试这个呢?不客气,假设您使用put方法更新实体,所以您希望上次修改的头值应该更改,您可以在您的案例中测试它。您请求资源的XML表示,在支持此mime类型的情况下,您希望您的响应
内容类型
将发生变化,而在不支持mime类型的情况下,您应该根据您的用例测试您的代码,以及您对代码的期望。非常感谢。你帮了我很多!