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