测试最大规模的未来概念是否抛出特定异常
Test that a scalatest futureconcept throws a specific exception
我想测试我的代码 returns twitter.Future 在未满足要求时抛出 IllegalArgumentException。
我正在使用从 twitter.Future 到 FutureConcept 的隐式转换的 scala 测试(类似于 ScalaFutures 特性的工作方式,但用于 twitter Futures)
但是我找不到应该怎么做!
我试过以下方法:
whenReady(methodThrowingExceptionFromFuture) {...handling}
这会在到达处理部分之前将异常作为 TestFailedException 抛出,因此它不会根据需要拦截异常。
所以我尝试拦截:
intercept[IllegalArgumentException] { future.futureValue }
这里也一样。我认为 FutureConcept 将异常包装为 TestFailedException 所以我正在考虑解包真正的异常,但肯定有一些其他方法来处理负面测试用例以及 scala futures?
我找到了隐藏在this response中的答案。基本上,将你最初的未来的 failed
预测传递给 whenReady
和亲属。
whenReady(methodThrowingExceptionFromFuture.failed) { ...handling... }
或者只是测试是否抛出了预期的异常类型:
methodThrowingExceptionFromFuture.failed.futureValue shouldBe a [MyException]
我想测试我的代码 returns twitter.Future 在未满足要求时抛出 IllegalArgumentException。
我正在使用从 twitter.Future 到 FutureConcept 的隐式转换的 scala 测试(类似于 ScalaFutures 特性的工作方式,但用于 twitter Futures)
但是我找不到应该怎么做!
我试过以下方法:
whenReady(methodThrowingExceptionFromFuture) {...handling}
这会在到达处理部分之前将异常作为 TestFailedException 抛出,因此它不会根据需要拦截异常。 所以我尝试拦截:
intercept[IllegalArgumentException] { future.futureValue }
这里也一样。我认为 FutureConcept 将异常包装为 TestFailedException 所以我正在考虑解包真正的异常,但肯定有一些其他方法来处理负面测试用例以及 scala futures?
我找到了隐藏在this response中的答案。基本上,将你最初的未来的 failed
预测传递给 whenReady
和亲属。
whenReady(methodThrowingExceptionFromFuture.failed) { ...handling... }
或者只是测试是否抛出了预期的异常类型:
methodThrowingExceptionFromFuture.failed.futureValue shouldBe a [MyException]