繁体   English   中英

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

[英]How to document REST services with Spring REST Docs that return a response conditionally?

我有一个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,这样您就可以获得一组代码片段。

这没有必要,但您可能还想考虑仅在循环中调用文档两次:一次是第一次调用将成功,然后一次调用最终调用,当您预期达到限制时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM