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");


     


  • 相关阅读:
    2020-01月-02月
    Work needing Technologies
    gcc和 gdb工具(转)
    pyenv and grunt-contrib-testem
    Statistics Books
    HTML5学习--SVG全攻略(基础篇)
    一个完整的学院网站实现过程
    JavaScript 常用单词整理
    一张图教会CSS3倒影
    Python大数据处理案例
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/15624692.html
Copyright © 2011-2022 走看看