高性价比云服务器选购地址:
https://www.kufanyun.com/server/buy.html
在使用 MockBean 注解来模拟 MyBatis 接口(interface)的bean(例如 DAO)时遇到了问题,下面介绍一下不能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 类中,该字段是这样的:

因此,对 Mockito.verify 的调用显然不起作用,因为我的模拟尚未载入到我的 OrderService 类中。
解决方案
必须将mapper的bean的名称添加到模拟 bean 注解中:

@MockBean(name = “orderDAO“) Private orderdao;
高性价比云服务器选购地址:
https://www.kufanyun.com/server/buy.html