• Mockito (九)


    Mockito @InjectMocks 注解注入 mock 对象

    mockito 会将 @Mock@Spy 修饰的对象自动注入到 @InjectMocks 修饰的对象中。

    注入方式有多种,mockito 会按照下面的顺序尝试注入:

    1. 构造函数注入
    2. 设值函数注入(set函数)
    3. 属性注入

    示例:

    准备两个业务类:

    package demo;
    
    import java.util.Random;
    
    public class HttpService {
    
        public int queryStatus() {
            // 发起网络请求,提取返回结果
            // 这里用随机数模拟结果
            return new Random().nextInt(2);
        }
    
    }
    package demo;
    
    public class ExampleService {
    
        private HttpService httpService;
    
        public String hello() {
            int status = httpService.queryStatus();
            if (status == 0) {
                return "你好";
            }
            else if (status == 1) {
                return "Hello";
            }
            else {
                return "未知状态";
            }
        }
    
    }

    编写测试类:

    import org.junit.Assert;
    import org.junit.Test;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    
    import static org.mockito.Mockito.when;
    
    
    public class ExampleServiceTest {
    
        @Mock
        private HttpService httpService;
    
        @InjectMocks
        private ExampleService exampleService = new ExampleService(); // 会将 httpService 注入进去
    
        @Test
        public void test01() {
    
            MockitoAnnotations.initMocks(this);
    
            when(httpService.queryStatus()).thenReturn(0);
    
            Assert.assertEquals("你好", exampleService.hello());
    
        }
    
    }

    转载:https://www.letianbiji.com/java-mockito/mockito-@injectmocks.html

    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14805618.html
Copyright © 2020-2023  润新知