测试一个scalatest futureconcept抛出一个特定的异常

时间:2015-02-16 12:43:32

标签: scala future scalatest

我想测试我的代码返回twitter.Future会在未满足需求时抛出IllegalArgumentException。

我正在使用scala测试,其中包含从twitter.Future到FutureConcept的隐式转换(类似于ScalaFutures的特性,但对于twitter期货而言)

但是我找不到应该怎么做!

我尝试了以下内容:

whenReady(methodThrowingExceptionFromFuture) {...handling}

这会在到达处理部分之前将异常作为TestFailedException抛出,因此它不会根据需要拦截异常。 所以我试过拦截:

intercept[IllegalArgumentException] { future.futureValue }

但同样在这里。我认为FutureConcept将异常包装为TestFailedException,所以我想解开真正的异常,但是肯定必须有其他方法来处理负面测试用例和scala期货吗?

1 个答案:

答案 0 :(得分:1)

我在this response中找到了答案。基本上,将原始未来的failed预测传递给whenReady和亲属。

whenReady(methodThrowingExceptionFromFuture.failed) { ...handling... }

或者只测试抛出预期的异常类型:

methodThrowingExceptionFromFuture.failed.futureValue shouldBe a [MyException]