我在rest控制器中有post方法,我想为这个方法创建一个测试: 这是我的方法:
+----------+----------------+
| id | flag |
+----------+----------------|
| 1 | false |
+----------+----------------|
| 2 | true |
+----------+----------------|
| 3 | false |
+----------+----------------|
| 4 | true |
+----------+----------------|
| 5 | false |
+----------+----------------|
| 6 | false |
+----------+----------------|
| 7 | true |
+----------+----------------+
我不知道这个用mock的测试应该是什么样的。
答案 0 :(得分:0)
当您使用Spring时,我建议您使用personService
来模拟除测试中的Controller之外的所有内容
您应该如此显式地模拟此Controller的依赖关系。在您的情况下,模拟personService
字段就足够了
在您的测试类中,声明一个用@MockBean
注释的{{1}}字段,以创建将添加到Spring上下文中的类的Mockito模拟。
然后记录这个模拟的行为
你在这里有两个分支:它起作用,异常上升。
因此,您可以定义两种测试方法并记录每种方法中的特定行为
最后断言来自控制器的响应。
答案 1 :(得分:0)
我已经测试了删除方法。是的我使用springboot,jpa,rest,h2:
@Test
public void shouldDeletePersonById() throws Exception {
Mockito.doCallRealMethod().when(personService).deleteById(1L);
mockMvc.perform(delete("/persons/{id}", 1L)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isNotFound());
}
但对于创造者来说,这很难找到我。我不知道我应该用posy方法调用什么(比如删除我调用id来找到我要删除的内容)。