我正在用注解@mock模拟存储库,然后将一些数据保存到测试类中的存储库中。数据是否真的存储在存储库中?
在另一个类中,当提取相同的数据时,显示未找到。如果数据未存储在存储库中,我将如何测试我的班级?
答案 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.