在ScalaTest中断言case类

在ScalaTest中断言case类,scala,pattern-matching,scalatest,case-class,Scala,Pattern Matching,Scalatest,Case Class,我看到有对选项类型的支持,但是自定义案例类呢 我有点想这样做: result match { case SuccessCase(values) => { values.foo should be ("bar") } case FailureCase => // should fail test, but how to say this in ScalaTest? } 您可以使用fail()故意使测试失败,例如case FailureCase=>fail(“err

我看到有对选项类型的支持,但是自定义案例类呢

我有点想这样做:

result match {
  case SuccessCase(values) => {
    values.foo should be ("bar")
  }
  case FailureCase => // should fail test, but how to say this in ScalaTest?
}

您可以使用fail()故意使测试失败,例如case FailureCase=>fail(“err msg”),但我不确定我是否理解您的意图。也许您可以展示更多的代码或详细说明以澄清问题?

假设您想要的案例是
DesiredCase
,这是否有效

result match {
  case DesiredCase(values) => {
    values.foo should be ("bar")
  }
  case _ => {
    fail("Not DesiredCase")
  }
}

Bill Venners还建议,如果经常编写此类测试,则应编写自定义匹配器:


谢谢你,比尔!谢谢你的精彩框架。我自己的回答有意义吗?哦,但是实际上,Inside也没有帮助,因为如果没有指定失败案例,测试不会失败-(所以我必须显式地使用fail()?我真的只想能够断言一个case类是一个特定的case,并提取它的内容进行断言,有点像
选项.value
速记…(可能是我遗漏了一些明显的东西!)嗨,是的,这就是我正在做的(Bill的回答告诉我如何调用fail()明确地)。