Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用有条件返回响应的SpringREST文档记录REST服务?_Java_Spring_Rest_Spring Mvc_Spring Restdocs - Fatal编程技术网

Java 如何用有条件返回响应的SpringREST文档记录REST服务?

Java 如何用有条件返回响应的SpringREST文档记录REST服务?,java,spring,rest,spring-mvc,spring-restdocs,Java,Spring,Rest,Spring Mvc,Spring Restdocs,我有一个REST服务,它对每个资源都有访问限制。假设我有以下服务: 获取/record/{recordId} 定义了每个记录的访问计数,当达到限制时,它返回一个异常 我编写了一个集成测试,创建访问限制为5的记录,然后创建一个循环,通过mockMvc发送请求 当我查看SpringREST文档中的示例时,我看到.andDo(…)是在测试之后添加的,它为测试创建了代码段。我担心它会覆盖同一个测试的代码片段。我想记录每个resourceId的资源访问限制,并提供资源何时可访问以及何时达到访问限制的示例

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

获取/record/{recordId}

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

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

当我查看SpringREST文档中的示例时,我看到.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"));
        }
    }
}
@测试
public void testWithLimit(最终字符串记录ID、最终字符串值、最终整数限制)引发异常{
对于(int i=0;i
是的,我肯定会在这两种情况下使用两个不同的文档ID,这样您就可以为这两种情况获得一组代码片段


这不是必要的,但您可能还想考虑只在循环中调用文档两次:第一次调用将成功,然后在期望达到极限时进行最后一次调用。

嗨,安迪,我不能记录错误响应,因为这是一个模拟MVC环境。我尝试使用RANDOM_端口和TestRestTemplate,但在这种情况下document()根本不会生成任何内容。看起来它需要一个mockMvcResult。有什么想法吗?你可以考虑使用休息休息文档。它允许您通过向实际服务器发出HTTP请求来记录API。REST Assured与使用TestRestTemplate有什么不同?我认为TestRestTemplate也在发出请求。REST文档支持REST-Assured。它不支持TestRestTemplate。