如何为 Rest Controller 编写 JUnit
Posted
技术标签:
【中文标题】如何为 Rest Controller 编写 JUnit【英文标题】:How to write JUnit for Rest Controller 【发布时间】:2015-02-27 12:55:45 【问题描述】:我写的 Rest 控制器如下:
@RestController
public class RegisterRestController
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public RegisterResponseObject createProspect(
@Valid @RequestBody ProfileBean profileBean) throws Exception
//If validation passes do something
在这里,如果验证失败,我将在 Controller 建议中处理异常并将错误对象发送回客户端。
如何使用 JUnit 测试此控制器的验证错误。
提前致谢。
【问题讨论】:
【参考方案1】:Spring 提供了可以执行请求的MockMvc。 Spring documentation 是一个很好的起点
【讨论】:
【参考方案2】:如果您在正常客户端请求中使用控制器建议处理所有错误,您也可以在 JUnit 中执行相同操作。
在测试控制器类时,我们构建 MockMvc 对象,然后将自定义控制器建议设置为该对象。这样,当控制器类中的方法出现任何异常时,它将首先进入控制器建议,然后返回到 JUnit 测试。
例如:
@Before
public void setup()
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standaloneSetup(this.customController)
.setControllerAdvice(new CustomControllerAdvice()).build();
这应该有助于测试控制器。 注意:我已经用 Spring 4 版本对此进行了测试
【讨论】:
以上是关于如何为 Rest Controller 编写 JUnit的主要内容,如果未能解决你的问题,请参考以下文章
如何为 django-rest-framework api 编写单元测试?
如何为包含 kafka、postgres 和 rest api docker 容器的应用程序编写 e2e 测试自动化