Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 有没有一种方法可以在用Mockito进行模拟时使用doNothing?_Unit Testing_Scala_Specs2 - Fatal编程技术网

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
看看这是否适合你