在Mockito中模拟存储库是什么意思?

时间:2019-11-18 17:56:15

标签: spring-boot junit mockito

我正在用注解@mock模拟存储库,然后将一些数据保存到测试类中的存储库中。数据是否真的存储在存储库中?

在另一个类中,当提取相同的数据时,显示未找到。如果数据未存储在存储库中,我将如何测试我的班级?

3 个答案:

答案 0 :(得分:1)

最有可能的是,当您在测试代码中正确地使用@Mock批注 时,您的模拟框架就会出现并实例化 某些内容以您的名字命名:

@Mock
WhatEver someWhatEver;

换句话说:当上述“执行”时,someWhatEver将引用符合WhatEver类提供的“ API”的 some 对象。

含义:您可以调用该类上存在的所有方法。什么也不会发生。因为someWhatEver不是您实际生产类的实例。它看起来像

因此,真实的答案是:您退后一步,然后研究整个主题。在不“了解”您正在做什么的情况下,使用某些模拟框架进行“单元测试”是没有意义的。 vogella撰写的教程是一个很好的起点。

答案 1 :(得分:0)

模拟是一种封装单元测试的方法。如果要测试服务方法,则对存储库是否正常运行不感兴趣。为此,您将编写存储库测试。因此,您可以模拟存储库调用,并告诉应返回哪种结果以在所有可能的情况下测试您的方法。模拟本身是代理,因此,您保存的数据在数据库中并不是真正安全的。这样做的好处是您无需开始整个上下文,并且测试更快。

答案 2 :(得分:0)

    When we want to do a Service Unit Test in SpringBoot Application We have not gone use Real DataBase just we need to Mock DataBases.
Similarly When u want to do Unit Test any External Serivce in Your class Just U can Mock that External Service call.

    A Mockito mock allows us to stub a method call. That means we can stub a method to return a specific object. For example, we can mock a Spring Data JPA repository in a service class to stub a getBooks() method of the repository to return a Book object.