如何验证传递给mock函数的异常类型?

时间:2015-10-17 17:22:23

标签: scala mockito specs2

在我的代码中,有:

def submitContent(getDocContent: () => String, callback: Try[Boolean] => Unit): Unit = {
    // ....
    callback(Failure(new InflightChangeTimeoutException(pendingChange)))
}

我想在某些情况下进行测试,callback将使用某些Failure的{​​{1}}进行调用,但我并不关心异常的值是什么。

在我的speces2测试中,我尝试过:

InflightChangeTimeoutException

会给我一些错误:

val callback = mock[Try[Boolean] => Unit]

submitContent(() => "any-other", callback)

there was one(callback).apply(===(Failure(any[InflightChangeTimeoutException])))

不确定哪里出错了。如何解决?

1 个答案:

答案 0 :(得分:1)

any[A]是一个函数,它将参数的匹配器注册到模拟函数作为副作用。但any[A]的返回值实际上是null

因此,检查回调结果的正确方法是:

there was one(callback).apply(beLike[Failure[Boolean]] { case Failure(t) => 
  t must beAnInstanceOf[InflightChangeTimeoutException] 
})