青年IT男

个人从事金融行业,就职过易极付、思建科技等重庆一流技术团队,目前就职于某网约车平台负责整个支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、人工智能等领域。

JMockit高级用法 -Mock方法中调用老方法

JMockit高级用法 -Mock方法中调用老方法

通过前面对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()); } }
0
1028826685@qq.com