【问题标题】:Asserting on case classes in ScalaTest在 ScalaTest 中断言案例类
【发布时间】:2012-07-27 12:03:29
【问题描述】:

我看到了对 Option 类型的支持,但是自定义案例类呢?

我有点想这样做:

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

【问题讨论】:

    标签: scala pattern-matching scalatest case-class


    【解决方案1】:

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

    【讨论】:

    • 谢谢比尔!并感谢出色的框架。我自己的回答有意义吗?皮特。
    • 哦,但实际上,Inside 也无济于事,因为如果未指定失败案例,测试不会失败。 :-( 那么我必须显式使用fail()吗?我真的只想能够断言一个案例类是一个特定的案例,并提取它的内容来做出断言,有点像option.value速记。 ..(可能是我遗漏了一些明显的东西!)
    【解决方案2】:

    假设您想要的案例是DesiredCase,这是否可行?

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

    【讨论】:

    • 嗨,是的,这就是我正在做的事情(Bill 的回答告诉我如何显式调用 fail())。
    【解决方案3】:

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

    https://groups.google.com/forum/?fromgroups#!msg/scalatest-users/4MemQiqLzao/_DsBTQWaqfwJ

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2014-11-16
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多