我有一个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"));
}
}
}
答案 0 :(得分:1)
是的,我肯定会为这两种情况使用两种不同的文档ID,以便为这两种情况提供一组代码段。
没有必要,但您可能还想考虑仅在循环中调用文档两次:第一次调用将成功,然后一次用于最终调用,此时您希望达到限制。