问题标签 [springmockito]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
762 浏览

java - 使用 Mockito 和 Spring MVC 的 Junit 测试用例

我有一个控制器类,我正在尝试使用 mockito 进行测试。

我的测试课程如下所示:-

但是当我运行测试类时,我收到以下错误。请帮忙 !

0 投票
1 回答
304 浏览

spring - 将模拟注入到 InterceptorHandler

我正在尝试在 InterceptorHandler 中注入一个模拟,但我可以配置它。

我有一个这样的拦截器:

我的测试看起来像这样:

拦截器工作正常,但是当我调试时,我看到拦截器中的服务为空,所以我想知道是否有办法模拟服务?

感谢提前。

0 投票
2 回答
9808 浏览

java - 在测试中使用 @MockBean 会强制重新加载应用程序上下文

我在 Spring Framework 上运行了几个集成测试,这些测试扩展了名为BaseITCase的基类。
像这样:

问题是其中一个测试有几个声明: @MockBean 在其中,并且在执行该测试的那一刻,Spring 重新创建上下文,并且此测试之后的测试有时会使用错误的 bean(来自使用 @ 完全为测试创建的上下文模拟豆)。我只是通过检查 bean 具有不同的哈希码才发现这一点。

当我使用@EventListener 时,它变得非常重要。因为调用了错误上下文(已经完成执行的测试类的上下文)的侦听器,并且我在那里有错误的 bean。

有什么解决方法吗?

我尝试将所有 @MockBean 声明移至基本类,它工作正常,因为没有创建新的上下文。但是,它使基础课太重了。另外,我试图为这个测试创建一个脏上下文,但是下一个测试失败并显示上下文已经关闭的消息。

0 投票
1 回答
574 浏览

java - Spring Boot Rest Api 的单元测试模拟

A 我们正在使用 Spring Boot Rest Api 进行服务调用。我猜我们可以将 Junit 用于单元测试用例。但是需要知道除junit之外的其他合适的工具或框架来模拟Spring Boot Rest Api()的单元测试。

0 投票
1 回答
4902 浏览

spring-boot - @SpyBean 和 Mockito.any() 在验证期间

我遇到以下问题。我有一个弹簧启动测试,我在其中注入和监视mongoDbChannelbean。然后我尝试启动正常的工作流程并验证是否send在 bean 上调用了该方法。

结果,我收到any与具体参数值不匹配的错误消息。然而,通常any意味着任何参数值。这里出了什么问题?

已编辑:我正在使用 java 8。我尝试使用any(GenericMessage.class)any(Message.class)但效果相同。

0 投票
1 回答
345 浏览

java - 使用 Mockito 和 MockMvc 的方法中的缺失代码属性

MockMvcBuilders.standaloneSetup(myService);执行时,我返回了这个堆栈跟踪:

可能有什么问题?

谢谢

0 投票
1 回答
855 浏览

spring - @Mock 注释的意义是什么?

我有一个关于在控制器测试中创建 bean 的问题。比如有一个这样的测试

和映射到的控制器方法

/VT/入口/

EntryService带有注释的@Service注释,并且MainApplicationConfiguration.class是带有@EnableWebMvc和扫描项目的配置EntryService

我想证明这个控制器真的EntryService在一个真实的应用程序中使用它,并且所有的都是由MainApplicationConfiguration.class.

问题是:为什么在我的测试执行范围内我的控制器代码中entryService带有注释?@Mock不应该只针对那个实例,并且控制器内部应该实例化另一个bean(EntryService),为什么这个注释模拟了该bean的所有出现(在测试范围内)?我在想,我应该编写整个其他上下文网络上下文,而不是在MainApplicationConfiguration.class内部模拟它并替换当前定义。我非常困惑为什么这个简单的注释会做出这样的事情。

如果有人能理解这种魔力,请说出@InjectMock 和@Mock 有什么区别?

感谢您的关注!对不起,如果我的问题很愚蠢。我很新,它有效,但我还没有魔法。

0 投票
2 回答
1154 浏览

java - 不可能用 DAO mock 编写集成测试控制器?

我变得疯狂,我尝试了各种测试运行器和可能注释的所有可能组合进行测试,我需要的最接近的解决方案如下:

我很好地在我的控制器方法中进入调试模式,在服务方法中但是当我看到 DAO 类型时,它不是 Mock 并且 findAll() 总是返回空的 ArrayList(),即使我这样做:

我没有提出异常,我的 DAO 没有被嘲笑,尽管我找到了所有 tuto,但我不知道该怎么做。我找到的最接近我需要的教程是这个带有 Spring MVC 测试的单元测试控制器,但还不够,因为他希望将模拟服务注入控制器以测试控制器,我想模拟注入到控制器中的真实服务(我想测试控制器+服务)。

在我看来,我已经通过在测试类上使用注释来做到这一点,该注释指定了 Spring 应用程序必须在测试模式下实例化哪些类以及必须模拟哪些类,但我不记得'-_-.

需要你的帮助,这让我发疯!

非常感谢你 !!!

0 投票
1 回答
3226 浏览

java - 如何在测试期间使用 Mapstruct 创建的映射器作为@Mock

上下文

我有一个简单的测试方法 testFindByUserName。我使用模拟库。我有由 Mapstruct 库创建的 @Mock UserMapper。

问题

Mocito 不处理我用来将用户映射到 userDto 的静态方法 INSTANCE。我有错误:error:org.mockito.exceptions.misusing.MissingMethodInvocationException: when() 需要一个必须是“模拟方法调用”的参数。例如:when(mock.getArticles()).thenReturn(articles);

此外,此错误可能会出现,因为: 1. 您存根以下任一方法:final/private/equals()/hashCode() 方法。这些方法不能被存根/验证。不支持在非公共父类上声明的模拟方法。2. 在 when() 中,您不会在 mock 上调用方法,而是在其他对象上调用方法。

如何解决这个问题。

编码

我测试的方法

0 投票
1 回答
64 浏览

junit - When/thenReturn 未映射

我不明白为什么我的 when/thenReturn 没有映射到模拟 bean。

在调试期间,我可以看到“UserDTO userDto = userService.update(id, entity);”行之后的“userDto” 在测试的控制器中等于 null。

知道我做错了什么吗?

测试文件 UsersControllerTest.java :

测试的 UsersController 类:

模拟的服务类: