Mockito MockBean不能mock MyBatis Mapper解决方法

在使用 MockBean 注解来模拟 MyBatis 接口(interface)的bean(例如 DAO)时遇到了问题,下面介绍一下不能mock MyBatis Mapper解决方法:

Mockito MockBean不能mock MyBatis Mapper解决方法

 

@Mapper
@Repository
public interface OrderDAO {
int insertOrder(@Param(“order“) Order order);
}

想在包含 OrderDAO 类型的字段的 OrderService 中执行集成测试并模拟此映射器。
集成测试用@ springboottest for integration test (webenvironment = springboottestWebEnvironment.RANDOM_PORT)注释并包含以下字段:

@MockBean
Private orderdao;

当运行这样的测试并查看对 OrderDAO 对象的引用是什么时,在集成测试中看到:

com.example.dao.OrderDAO$MockitoMock$1819884459

但在OrderService 类中,该字段是这样的:

com.sun.proxy.$Proxy179 (org.It’s not a good idea.binding.MapperProxy@37d9310e)

因此,对 Mockito.verify 的调用显然不起作用,因为我的模拟尚未注入到我的 OrderService 类中。

解决方案

必须将mapper的bean的名称添加到模拟 bean 注解中:

@MockBean(name = “orderDAO“)
Private orderdao;
以上就是关于“Mockito MockBean不能mock MyBatis Mapper解决方法”的相关解答,酷番云云南知名老牌云服务商,云服务器用户按需选择内存、数据盘、cup等配置大小,弹性灵活扩容,平滑升级。专业技术团队7×24小时服务支持,售后无忧!

高性价比云服务器选购地址:

https://www.kufanyun.com/server/buy.html

图片来源于AI模型,如侵权请联系管理员。作者:路飞,如若转载,请注明出处:https://www.kufanyun.com/ask/1299.html

(0)
上一篇2021年12月9日 15:35
下一篇 2021年12月11日 15:53

相关推荐

  • 兄弟dcp9020cdn打印机黑色复位设置方法详解?

    兄弟DCP9020CDN打印机黑色复位操作指南背景介绍兄弟DCP9020CDN打印机是一款性能优异的多功能打印机,能够满足日常办公和家庭打印需求,在使用过程中,可能会遇到打印黑色墨水不足的情况,此时进行黑色复位操作可以恢复打印效果,以下将详细介绍黑色复位的具体步骤,操作步骤打开打印机盖板,取出墨盒,将墨盒轻轻拍……

    2025年11月28日
    040
  • CF地图工坊为何未上传至CDN?原因揭秘与影响分析

    在我国,CF(穿越火线)地图工坊是一个让玩家能够创作和分享自定义地图的平台,有些玩家在使用过程中可能会遇到“CF地图工坊没上传到cdn”的提示,这究竟是什么意思呢?以下将对此进行详细解析,什么是CDN?分发网络(Content Delivery Network),是一种通过在全球范围内分散部署服务器,来加速网页……

    2025年11月7日
    070
  • 配置CDN后服务器CPU持续100%,原因排查与优化方案?

    配置CDN后服务器CPU一直100%:原因分析与解决策略问题背景随着互联网的快速发展,越来越多的网站和企业开始使用CDN(内容分发网络)来提高网站访问速度和用户体验,有些用户在配置CDN后发现自己的服务器CPU使用率一直保持在100%,这严重影响了网站的正常运行,本文将针对这一问题进行分析,并提出相应的解决策略……

    2025年11月6日
    0210
  • 广电网络CDN1G价格是多少?性价比如何?市场行情分析一览

    广电网络CDN1G价格解析什么是广电网络CDN?广电网络CDN,即内容分发网络,是一种通过优化网络资源,提高内容分发效率的技术,它可以将网络内容存储在离用户较近的服务器上,从而减少数据传输距离,提高访问速度,降低网络延迟,广电网络CDN1G的价格价格区间广电网络CDN1G的价格因地区、服务商、配置等因素有所不同……

    2025年11月18日
    070

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注