MOCKITO - 根据调用方法的次数更改抛出的异常

问题描述 投票:1回答:1

我想在执行该方法的前5次抛出一个特定的异常。之后,我想抛出另一个例外。

理想情况下,我有这个代码片段,显然不起作用

int count = 0;
int max = 5;

@Test
public void myTest(){
   ...
   doThrow(count++ < max ? myException1 : myException2).when(myClass).myMethod()
   ...
}

我怎样才能使它工作?

java mockito stub
1个回答
3
投票

您可以在thenThrow(Throwable... throwables)返回的OngoingStubbing实例上使用Mockito.when(...)方法。 该方法接受var-args,它是在调用mocked方法时连续抛出的异常。

@Test
public void myTest(){
   // ...
   Mockito.when(myClass.myMethod())
          .thenThrow( myException1, 
                      myException1, 
                      myException1, 
                      myException1, 
                      myException1,
                      myException2);
   // ...
}

或者通过链接OngoingStubbing.thenThrow()调用,因为该方法实际上返回一个OngoingStubbing对象:

@Test
public void myTest(){
   // ...
   Mockito.when(myClass.myMethod())
          .thenThrow(myException1)
          .thenThrow(myException1)
          .thenThrow(myException1)
          .thenThrow(myException1)
          .thenThrow(myException1)
          .thenThrow(myException2);
   // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.