zoukankan      html  css  js  c++  java
  • Mockito (十二)

    Mockito 使用then、thenAnswer 自定义方法处理逻辑

    then 和 thenAnswer 的效果是一样的。它们的参数是实现 Answer 接口的对象,在该对象中可以获取调用参数,自定义返回值。

    示例:

    import org.junit.Assert;
    import org.junit.Test;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    import org.mockito.invocation.InvocationOnMock;
    import org.mockito.stubbing.Answer;
    
    import static org.mockito.ArgumentMatchers.anyInt;
    import static org.mockito.Mockito.when;
    
    public class MockitoDemo {
    
        static class ExampleService {
    
            public int add(int a, int b) {
                return a+b;
            }
    
        }
    
        @Mock
        private ExampleService exampleService;
    
        @Test
        public void test() {
    
            MockitoAnnotations.initMocks(this);
    
            when(exampleService.add(anyInt(),anyInt())).thenAnswer(new Answer<Integer>() {
                @Override
                public Integer answer(InvocationOnMock invocation) throws Throwable {
                    Object[] args = invocation.getArguments();
                    // 获取参数
                    Integer a = (Integer) args[0];
                    Integer b = (Integer) args[1];
    
                    // 根据第1个参数,返回不同的值
                    if (a == 1) {
                        return 9;
                    }
                    if (a == 2) {
                        return 99;
                    }
                    if (a == 3) {
                        throw new RuntimeException("异常");
                    }
                    return 999;
                }
            });
    
            Assert.assertEquals(9, exampleService.add(1, 100));
            Assert.assertEquals(99, exampleService.add(2, 100));
    
            try {
                exampleService.add(3, 100);
                Assert.fail();
            } catch (RuntimeException ex) {
                Assert.assertEquals("异常", ex.getMessage());
            }
        }
    
    
    }

    转载:https://www.letianbiji.com/java-mockito/mockito-then-thenanswer.html

    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    TLPI读书笔记第15章-文件属性2
    TLPI读书笔记第15章-文件属性1
    Java异常及错误
    10055
    4月。
    JavaScript三种方法获取地址栏参数的方法
    页面预加载loading动画,再载入内容
    什么是可串行化MVCC
    简化版扫雷详细解
    论unity中UI工具与GUI函数
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14806231.html
Copyright © 2011-2022 走看看