(七)Mock方法中调用老方法--实战篇

通过前面对MockUp介绍 ,使用,我们发现MockUp确实很强大。使用@Mock方法太直接了。
可是有时候 ,你只希望@Mock的方法当入参数满足特定条件下才走Mock逻辑,其它条件走老的逻辑。可以吗?
当然可以!看下面的例子:

import mockit.Invocation;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Assert;
import org.junit.Test;

import java.util.Calendar;
import java.util.Date;

//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();   //创建一个Calendar对象
        Assert.assertTrue(now.get(Calendar.HOUR_OF_DAY )== 7);  // 只有小时变成Mock方法
        Assert.assertTrue(now.get(Calendar.MONTH) == (new Date()).getTime());   //其他的还是走老方法。
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值