zoukankan      html  css  js  c++  java
  • Mockito MockBean不能mock MyBatis Mapper解决方法

    问题描述

    我在使用 MockBean 注解来模拟 MyBatis 接口(interface)的bean(例如 DAO)时遇到了问题。

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

    我想在包含 OrderDAO 类型的字段的 OrderService 中执行集成测试并模拟此映射器。

    我的集成测试用@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 注释并包含以下字段:

    @MockBean
    private OrderDAO orderDAO;
    

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

    com.example.dao.OrderDAO$MockitoMock$1819884459

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

    com.sun.proxy.$Proxy179 (org.apache.ibatis.binding.MapperProxy@37d9310e)

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

    解决方案

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

    @MockBean(name = "orderDAO")
    private OrderDAO orderDAO;
    



    微信扫一扫,关注我的微信公众号【Louis军】,获取更多及时更新。

    如想交个朋友,可加微信:hunter2881(备注:博客园)


  • 相关阅读:
    [py]函数小结
    [py]class的特殊方法
    [py]数据描述符优先级
    [py]python中__new__作用
    [py]django重置密码
    [py]多态的理解
    [py]类属性和实例属性
    【转】比较详细的Asp伪静态化方法及Asp静态化探讨
    VB6 XArrayDB | Xarray ReDim 用法
    vb6 使用msxml2.serverxmlhttp 请求HTTP
  • 原文地址:https://www.cnblogs.com/junzi2099/p/15661674.html
Copyright © 2011-2022 走看看