【发布时间】:2015-06-06 09:33:01
【问题描述】:
我为删除方法做了以下测试方法。测试状态时我得到 200 ok,现在我需要在调用 web 服务后测试,确保学生被删除我使用此代码来制作它
.andExpect(jsonPath("$.id").value(s.getId().intValue()))
但是获取异常json不能为null或emty,谁能帮我测试一下删除方法吗?
@Test
public void testDelete() throws Exception {
Student s = data.getAll();
ResultActions perform = mockMvc.perform(
delete(studentWebservice.URL + "/{id}", m.getId()));
perform.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(s.getId().intValue()))
.andExpect(jsonPath("$.name").value(s.name));
}
服务中的方法
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public void delete(@PathVariable Long id);
方法实现
@Override
public void delete(@PathVariable Long id) {
repo.delete(id);
}
【问题讨论】:
-
您正在测试的删除方法是否在响应中发回 JSON?代码在哪里?
-
我编辑帖子并添加删除方法
-
您的方法返回 void。因此 HTTP 响应正文将为空。然而,您正试图将其解析为 JSON 并从中提取一个 id 和一个名称。这没有意义。
-
你能帮我吗?
-
方法的约定是删除资源,什么也不返回。所以在控制器测试中模拟服务,并验证它的 delete() 方法是否被调用。或者,如果它是一个集成测试并且服务未被模拟,则发送另一个获取资源的请求,并检查您是否收到 404(因为资源应该已被删除)