scala - 如何使用 ScalaTest 正确测试 Try[T]?

标签 scala scalatest

我有一个返回 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看起来有点笨拙,因为对于 Options 和 Sequences 有类似 should be(empty) 的东西和 shouldNot be(empty) .我找不到像 should be(successful) 这样的东西.

这是否存在或者我的方法真的是要走的路?

最佳答案

另一种可能是做

import org.scalatest.TryValues._
maybeRes.success.value.bar shouldBe "moo"

这将给出一条消息,指示 Try没有成功,而不是在 maybeRes.get 中抛出异常.

模拟存在于 Option , EitherPartialFunction (使用相关导入)

关于scala - 如何使用 ScalaTest 正确测试 Try[T]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44112671/

相关文章:

scala - 编译器将结构类型用于在白盒宏内生成的案例类

scala - 测试事件提交到服务

apache-spark - 如何为 Sparks 新结构化流编写集成测试?

scala - 无法通过 sbt 正确启动 findbugs

scala - 在 Scala/Spark 中从 RDD 中提取数据

Scalacheck 嵌套 forall 在 Scalatest 测试失败时抛出 "oneOf called on empty collection"

selenium - 如何在元素上运行查询?

Scalatest 模拟数据库

scala - 如果特征组合已经在类级别中组合,则在新实例上将被忽略

scala - Scala中的A#B是什么意思