没有在DB中插入数据的CrudRepository测试用例

时间:2018-12-11 06:18:53

标签: spring-boot junit mockito

我有一个实现CrudRepository的存储库类。然后在服务类中,我已自动连线此存储库。然后在控制器类中,我已自动连接了此服务。

我想编写控制器类的测试用例。我正在使用以下配置。

ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  scale_y_continuous(position = "right") +
  theme(axis.text.y.right = element_text(color = "red", margin = margin(40, 40, 40, 40))) 

我的问题是,当我运行测试用例时,数据将插入用于应用程序的DB中。我可以在不将数据插入数据库的情况下进行测试吗?

1 个答案:

答案 0 :(得分:0)

从概念上讲,当我们测试服务时,我们模拟存储库而不是注入。

您需要模拟存储库和设置行为以返回数据。

一个例子:

@MockBean
XYZRepository xyzRepository;

@Test
public void test() {

    // other mocks
    //
    when(xyzRepository.findAll()).thenReturn(Arrays.asList(new XYZ()));

    // service calls
    // assertions
}