java - 如何使用有条件地返回响应的 Spring REST Docs 记录 REST 服务?

标签 java spring rest spring-mvc spring-restdocs

我有一个 REST 服务,每个资源都有访问限制。假设我有以下服务:

GET /record/{recordId}

定义了每条记录的访问计数,当达到限制时,它会返回一个异常。

我编写了一个集成测试,它创建了访问限制为 5 的记录,然后创建了一个通过 mockMvc 发送请求的循环。

当我查看 Spring REST Docs 中的示例时,我看到 .andDo(...) 是在测试之后添加的,它为测试创建了片段。恐怕它会覆盖相同测试的片段。我想记录资源具有每个 resourceId 的访问限制,并提供资源何时可访问以及何时达到访问限制的示例。

对于这些情况,我应该使用 2 个文档 ID(见下文)吗?这是正确的方法吗?

@Test
public void testWithLimit(final String recordId, final String value, final int limit) throws Exception {
    for (int i = 0; i < limit; i++) {
        final ResultActions test = mockMvc.perform(get("/record/" + recordId));

        if (i < limit) {
            test.andExpect(status().isFound())
                .andExpect(jsonValue("$.value").exists())
                .andDo(document("resource-accessible"));
        } else {
            test.andExpect(status().isGone())
                .andExpect(validateException(RecordLimitExceededException.class))
                .andDo(document("resource-access-limit-reached"));
        }
    }
}

最佳答案

是的,对于这两种情况,我肯定会使用两个不同的文档 ID,这样您就可以获得针对这两种情况的一组片段。

这不是必需的,但您可能还想考虑在循环中只调用 document 两次:一次用于第一次成功的调用,一次用于当您预计已达到限制时的最后一次调用。

关于java - 如何使用有条件地返回响应的 Spring REST Docs 记录 REST 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393752/

相关文章:

java - 使用 Collections 或我的函数计算 ArrayList 中对象的出现次数

Spring+Hibernate+Ehcache让query_cache永不过期

java - 如何在 Spring Boot 中跟踪唯一的 Web 请求?

java - 非法的反射访问操作会阻止程序运行吗?

java - 如何使用java在mongodb中使用类似查询获取所有记录

sql - Oracle SQL 合并语句只有一个表和一堆值

api - REST 风格的 API : Were to put the custom application errors?

javascript - JQuery AJAX GET 请求总是返回错误

json - 如何修改我的代码以返回自定义 JSON 而不仅仅是状态 200?

Java - Swing UI 独立的套接字逻辑