如何模拟一些方法只是第一次抛出异常然后什么都不做,用specs2?

时间:2015-04-10 03:14:50

标签: scala mockito specs2

在specs2中,我们可以模拟一个方法并让它抛出异常:

class Hello {
   def say():Unit = println("Hello, world")
}

val hello = mock[Hello]
hello.say() throws new RuntimeException("something wrong")

但是如何让它第一次抛出,然后总是什么都不做?

2 个答案:

答案 0 :(得分:2)

这实际上是一个模拟问题,而不是specs2问题。 来自mockito文档:

when(mock.someMethod("some arg"))
   .thenThrow(new RuntimeException())
   .thenReturn("foo");

替代,短版本的连续存根:

 when(mock.someMethod("some arg"))
   .thenReturn("one", "two", "three");

答案 1 :(得分:0)

doThrow(new RuntimeException("something wrong")).doNothing().when(hello).say()