莫基托提出了几个论点的条件



我正在尝试模拟一个方法的结果。结果应该有两种变化:

Mockito.when(class.method(a,b)).thenReturn(c);
  • 如果a-b等于20
  • 如果CCD_ 2不是20

我如何实现写两个不同的语句并返回不同的结果?

附言:我知道如何使用一个参数的条件。例如:

class MyCondition extends ArgumentMatcher<AClass> {
    public boolean matches(Object sd) {
           boolean toReturn = (sd instanceof AClass) && (sd >15);
           return toReturn;
           }
    } 

Mockito.when(class.method(Mockito.argThat(new MyCondition()),b)).thenAnswer(
    new Answer<BClass>() {
        public BClass answer(InvocationOnMock invocation) {
             return new BClass();
        }
    });

但是我怎样才能为两个方法参数建立一个条件呢?

使用Answer:

Mockito.when(instance.method(Mockito.anyInt(), Mockito.anyInt()))
    .thenAnswer(
        new Answer<Integer>() {
          @Override public Integer answer(InvocationOnMock invocation) {
            int a = (Integer) invocation.getArguments()[0];
            int b = (Integer) invocation.getArguments()[1];
            if (a - b == 20) {
              return ...;
            } else {
              return ...;
            }
          }
        });

相关内容

  • 没有找到相关文章

最新更新