【问题标题】:How to verify the type of an exception passed to a mock function?如何验证传递给模拟函数的异常类型?
【发布时间】:2015-10-17 17:22:22
【问题描述】:

在我的代码中,有:

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

我想在某些条件下进行测试,callback 将被一些 InflightChangeTimeoutException 调用,但我不关心异常的值是什么。

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

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

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

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

会给我一些错误,例如:

The mock was not called as expected: 
Argument(s) are different! Wanted:
function1.apply(
    'Failure(com.test.InflightChangeTimeoutException)'

 is not equal to 

'Failure(null)'
);

不知道哪里错了。如何解决?

【问题讨论】:

    标签: scala mockito specs2


    【解决方案1】:

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

    所以检查回调结果的正确方法是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多