首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring仿真

Spring仿真
EN

Stack Overflow用户
提问于 2014-02-10 19:50:34
回答 3查看 2.7K关注 0票数 3

我正在尝试使用Spring模拟模块来测试我的控制器。我补充说:

代码语言:javascript
复制
    @Before
    public void beforeTest() {
        MockitoAnnotations.initMocks(this);
        standaloneSetup(new CarController());
    }

效果很好。但是,我已经创建了一个带有@ExceptionHandler注释的方法的控制器通知。我想测试它在单元测试期间是否有效。我看到我可以构建一个MockMvc对象并将它传递给standaloneSetup(..)

代码语言:javascript
复制
MockMvcBuilders.standaloneSetup(
    new CarController()).setHandlerExceptionResolvers(...).build();

但是,当我这样做时,检查异常处理程序是否工作的测试通过了,但是使用jsonpath访问响应的所有其他测试都会因此错误而失败:

代码语言:javascript
复制
java.lang.IllegalStateException: Expected response body to be verified as JSON,
    HTML or XML but content-type 'null' is not supported out of the box.
Try registering a custom parser using:
   RestAssured.registerParser("null", <parser type>);
Content was:

我该怎么解决这个问题?怎么啦?

的底线是我想要单元测试我的rest。例如,当我添加了一个异常处理程序时,应该如何做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-12 19:42:48

底线是我想要单元测试我的rest。例如,当我添加了一个异常处理程序时,应该如何做到这一点?

首先,我将使用版本3.2提供的内置spring模拟框架,而不是放心(它可能很好,但也无法想象它也是集成的)。这可能包括开始的基础知识。

其次,您可以在测试方法中只使用try and catch,然后在布尔值上断言是否抛出异常。或测试是否从对状态代码500执行expect的控制器返回异常消息,例如。这将取决于您的api。

票数 1
EN

Stack Overflow用户

发布于 2014-02-13 05:28:36

尝试使用accept():

代码语言:javascript
复制
mockMvc.perform(post("/hotels/{id}", 42).accept(MediaType.APPLICATION_JSON));

您还可以在构建MockMvc时设置返回类型。

代码语言:javascript
复制
mockMvc = standaloneSetup(new AccountController())
        .defaultRequest(get("/")
        .contextPath("/app").servletPath("/main")
>>        .accept(MediaType.APPLICATION_JSON).build();

http://docs.spring.io/spring/docs/4.0.1.RELEASE/spring-framework-reference/htmlsingle/#unit-testing-spring-mvc

当然,您需要传递适当的MediaType值。

票数 1
EN

Stack Overflow用户

发布于 2014-02-12 19:36:33

请求的模拟内容类型为null,因此spring无法确定应该调用哪种方法。如果将值设置为application/html+xml、application/json等,则应该正确工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21686584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档