Unit testing 有没有一种方法可以在用Mockito进行模拟时使用doNothing?
假设我有一个被嘲笑的特质,福:Unit testing 有没有一种方法可以在用Mockito进行模拟时使用doNothing?,unit-testing,scala,specs2,Unit Testing,Scala,Specs2,假设我有一个被嘲笑的特质,福: 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
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
但这并没有编译
谢谢 单位返回类型让事情变得有点棘手,因为你不能仅仅链接:
returns "foo" thenThrows new RuntimeException
但如果您使用答案
如下所示,仍然可以解决此问题:
mockedFoo.op(anyString) answers {args => } thenThrows new RuntimeException
看看这是否适合您。单位返回类型使事情变得有点棘手,因为您不能仅仅链接:
returns "foo" thenThrows new RuntimeException
但如果您使用答案
如下所示,仍然可以解决此问题:
mockedFoo.op(anyString) answers {args => } thenThrows new RuntimeException
看看这是否适合你