1

是否可以测试内部包含休息方法的控制器?

    @RequestMapping(value = "/user", method = RequestMethod.PUT,consumes="application/json")
    public ResponseEntity<String>createNewAccount(HttpEntity<String>request) {
//do something

}

我将如何使用将 http 标头、uri 和内容发送到此方法的虚假 http 请求来调用此方法?任何这样做的存根或模拟类?就像是

httpMockRequest.consume(uri,headers, body,method, controller class);

然后它将进入我的控制器并根据使用的 uri 和 http 方法查找请求映射,然后执行并发送来自 httpMockRequest 测试对象的 http 标头和内容?

Spring 或 Java EE 中存在类似的东西吗?

顺便说一句,我正在使用 Spring 3。

4

1 回答 1

1

最简单的方法就是实例化控制器并将方法直接调用到控制器。您的测试应该只测试控制器的实现,而不是整个流程(从 Servlet 到您的方法)。

我通常在我的测试实现中做这样的事情:

Controller c = new Controller();
// configure controller c with mock services
ResponseEntity<String> re = c.createNewAccount(new HttpEntity<String>("{\"property\":10}"));
// check response entity (parsing json of re.getBody())

对于标题,您有以下构造函数:

HttpEntity(T body, MultiValueMap<String, String> headers)

URI 本身在这里并不重要,因为它仅用于解析控制器和方法。

于 2012-06-21T10:01:25.773 回答