zoukankan      html  css  js  c++  java
  • 单元测试使用Mock随笔

    @RunWith(MockitoJUnitRunner.class)
    public class UserServiceTest {
    
        @Spy
        @InjectMocks
        private UserServiceImpl userService;
        @Mock
        private UserMapper userMapper;
        @Mock
        private UserAddressService userAddressService;
    
        @Test
        public void saveOrUpdateTest() {
            try {
                when(userAddressService.check(any())).thenReturn(true);
                when(userService.remove(any())).thenReturn(true);
                doNothing().when(userMapper).setUTF8MB4();
                boolean result = userService.saveOrUpdate(null, null);
                System.out.println();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            Assert.assertTrue(true);
        }
    
    }
    @InjectMocks:是直接实例化一个对象,且可以实现自动注入,注入的对象就是@Mock或@Spy注解的对象
    @Mock:Mock出的对象,执行对象方法会返回Null,可以通过when().thenReturn方式或者doReturn().when().方法的方式指定返回值。
    如果对象方法是void的形式的,需要使用doNothing().when形式
    @Spy:实例化的对象会优先执行原有方法,如果想得到指定结果,则使用doReturn when形式。
    在MybatisPlus中和
    @InjectMocks配合使用,便可实现拦截处理封装好的this.remove等类似方法

    MyBatisPlus中Wrappers.lambdaQuery会使用到select某些指定字段的方法,此过程涉及到了MyBatisPlus需要初始化数据库表和实体类关系,否则无法生成select语句。
    在Mock中需要添加如下代码,否则报错:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this entity
        @Before
        public void init() {
            TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), QyWxCorpUserEntity.class);
        }

     如果需要注入属性字段,如Spring中靠@Value注解的,可以直接使用反射赋值

    ReflectionTestUtils.setField(targetObject, "crm.secret", "aasdfasdfe");


     


  • 相关阅读:
    POJ2126——Prime Path(BFS)
    POJ3020——Antenna Placement(二分图的最大匹配)
    POJ1019——Number Sequence(大数处理)
    CodeForces484A——Bits(贪心算法)
    CodeForces485B——Valuable Resources(水题)
    CodeForces485A——Factory(抽屉原理)
    HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
    cache和buffer区别
    https页面证书验证、加密过程简介
    主要的开源镜像站点资源
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/15624692.html
Copyright © 2011-2022 走看看