使用模拟对象为rest post方法创建测试

时间:2018-04-27 08:43:37

标签: rest testing post mockito

我在rest控制器中有post方法,我想为这个方法创建一个测试: 这是我的方法:

+----------+----------------+
|  id      |  flag          |
+----------+----------------|
|  1       | false          |  
+----------+----------------|
|  2       | true           | 
+----------+----------------|
|  3       | false          |
+----------+----------------|
|  4       | true           |  
+----------+----------------|
|  5       | false          |
+----------+----------------|
|  6       | false          |  
+----------+----------------|
|  7       | true           |
+----------+----------------+

我不知道这个用mock的测试应该是什么样的。

2 个答案:

答案 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来找到我要删除的内容)。