让我们说我有一个嘲弄的特质Foo:
trait Foo {
def op(x: String): Unit
}
我用
模拟了这个界面val mockedFoo = mock[Foo]
我希望方法op在第二次调用时抛出异常,例如
import org.specs2.mock.Mockito
import org.specs2.mutable.Specification
trait Foo {
def op(x: String): Unit
}
class DummySpec extends Specification with Mockito {
"dummy" should {
"test" in {
val mockedFoo = mock[Foo]
org.mockito.Mockito.doNothing().doThrow(new RuntimeException).when(mockedFoo).op(any[String])
mockedFoo.op("This one should work fine") should not(throwAn[Exception])
mockedFoo.op("This one should throw an exception") should throwAn[Exception]
}
}
}
有没有办法在specs2风格中执行此操作? e.g。
mockedFoo.op(any[String]) returns Unit thenThrows new RuntimeException
但这不会编译。
谢谢!
答案 0 :(得分:4)
Unit
返回类型使事情变得有点棘手,因为你不能只链:
returns "foo" thenThrows new RuntimeException
但是,如果您使用下面的answers
,您仍然可以解决此问题:
mockedFoo.op(anyString) answers {args => } thenThrows new RuntimeException
看看这是否适合你。