2.11 使用Delegate在Expectation中定制re

作者: 孙兴斌 | 来源:发表于2016-12-27 17:38 被阅读14次

使用场景:在Expectation中需要根据replay时的参数值决定返回值。
原理:JMockit拦截调用,转交给Delegate处理。

@Test
public void delegatingInvocationsToACustomDelegate(@Mocked final DependencyAbc anyAbc){
   new Expectations() {{
      anyAbc.intReturningMethod(anyInt, null);
      result = new Delegate() {
         int aDelegateMethod(int i, String s)
         {
            return i == 1 ? i : s.length();
         }
      };
   }};

   // Calls to "intReturningMethod(int, String)" will execute the delegate method above.
   new UnitUnderTest().doSomething();
}
  • delegate方法的参数应该与原始方法一致,返回值需要兼容或者为异常。
  • 可以delegate构造器,这时返回值设置为空。
  • delegate参数中可以有一个 Invocation对象,从而获得调用者的引用

相关文章

网友评论

    本文标题:2.11 使用Delegate在Expectation中定制re

    本文链接:https://www.haomeiwen.com/subject/sjdevttx.html