如何为 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 编写单元测试?

如何为具有多个模式分布的Controller编写单元测试

如何为包含 kafka、postgres 和 rest api docker 容器的应用程序编写 e2e 测试自动化

如何为 REST API 构建 Mongo 数据库 [关闭]

如何为 Angular 组件注释 ngdoc?

如何为 REST 和 GraphQL 使用相同的 RoleGuard?