jmockit 调用老方法

from Jmockit 中文网 http://jmockit.cn/showArticle.htm?channel=4&id=18

通过前面对MockUp介绍 ,使用,我们发现MockUp确实很强大。使用@Mock方法太直接了。

可是有时候 ,你只希望@Mock的方法当入参数满足特定条件下才走Mock逻辑,其它条件走老的逻辑。可以吗?

当然可以!看下面的例子:

//Mock方法中还可以调用老方法
public class InvocationMockUpTest {
    @Test
    public void testMockUp() {
        // 对Java自带类Calendar的get方法进行定制
        new MockUp<Calendar>(Calendar.class) {
            // 申明参数invocation,表示老方法的调用
            @Mock
            public int get(Invocation invocation, int unit) {
                // 只希望时间是早上7点
                if (unit == Calendar.HOUR_OF_DAY) {
                    return 7;
                }
                // 其它时间(年份,月份,日,分,秒均不变)
                return invocation.proceed(unit);
            }
        };
        Calendar now = Calendar.getInstance();
        // 只有小时变成Mock方法
        Assert.assertTrue(now.get(Calendar.HOUR_OF_DAY) == 7);
        // 其它的还是走老的方法
        Assert.assertTrue(now.get(Calendar.MONTH) == (new Date()).getMonth());
        Assert.assertTrue(now.get(Calendar.DAY_OF_MONTH) == (new Date()).getDate());
    }
 
}

 

H2serviceTest
posted @ 2019-08-14 11:01  大哥超帅  阅读(511)  评论(0)    收藏  举报