Java 如何用有条件返回响应的SpringREST文档记录REST服务?
我有一个REST服务,它对每个资源都有访问限制。假设我有以下服务: 获取/record/{recordId} 定义了每个记录的访问计数,当达到限制时,它返回一个异常 我编写了一个集成测试,创建访问限制为5的记录,然后创建一个循环,通过mockMvc发送请求 当我查看SpringREST文档中的示例时,我看到.andDo(…)是在测试之后添加的,它为测试创建了代码段。我担心它会覆盖同一个测试的代码片段。我想记录每个resourceId的资源访问限制,并提供资源何时可访问以及何时达到访问限制的示例 对于这些情况,我是否应该使用2个文档ID(见下文)?这是正确的方法吗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的资源访问限制,并提供资源何时可访问以及何时达到访问限制的示例
@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。