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

时间:2018-02-28 22:15:15

标签: java mockito stub

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

理想情况下,我有这段代码片段,显然无法正常工作

<a href="" id="a">Click me</a><br>
  Hello<br>
  Hello<br>

<div id="page">
</div>
<div id="popup"> 
  External website:
  <iframe id="iframe"></iframe>
</div>

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:3)

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

@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);
   // ...
}