我有一个返回Try
对象的方法:
def doSomething(p: SomeParam): Try[Something] = {
// code
}
我现在想用ScalaTest进行测试。目前我这样做:
"My try method" should "succeed" in {
val maybeRes = doSomething(SomeParam("foo"))
maybeRes.isSuccess shouldBe true
val res = maybeRes.get
res.bar shouldBe "moo"
}
然而,检查isSuccess
为true
看起来有点笨拙,因为对于选项和序列,有should be(empty)
和shouldNot be(empty)
之类的内容。我找不到像should be(successful)
这样的内容。
这是否存在或者我的方法真的要走了?
答案 0 :(得分:12)
另一种可能性是
import org.scalatest.TryValues._
maybeRes.success.value.bar shouldBe "moo"
这会显示一条消息,指出Try
未成功,而不是在maybeRes.get
中抛出异常。
适用于Option
,Either
和PartialFunction
的类似物(使用相关导入)
答案 1 :(得分:9)
只需检查一下您的返回值是否为成功类型:
maybeRes shouldBe Success("moo")
答案 2 :(得分:1)
可选地
import org.scalatest.TryValues._
// ...
maybeRes.success.value should be "moo"