我想测试我的代码返回twitter.Future会在未满足需求时抛出IllegalArgumentException。
我正在使用scala测试,其中包含从twitter.Future到FutureConcept的隐式转换(类似于ScalaFutures的特性,但对于twitter期货而言)
但是我找不到应该怎么做!
我尝试了以下内容:
whenReady(methodThrowingExceptionFromFuture) {...handling}
这会在到达处理部分之前将异常作为TestFailedException抛出,因此它不会根据需要拦截异常。 所以我试过拦截:
intercept[IllegalArgumentException] { future.futureValue }
但同样在这里。我认为FutureConcept将异常包装为TestFailedException,所以我想解开真正的异常,但是肯定必须有其他方法来处理负面测试用例和scala期货吗?
答案 0 :(得分:1)
我在this response中找到了答案。基本上,将原始未来的failed
预测传递给whenReady
和亲属。
whenReady(methodThrowingExceptionFromFuture.failed) { ...handling... }
或者只测试抛出预期的异常类型:
methodThrowingExceptionFromFuture.failed.futureValue shouldBe a [MyException]