scala spec2 我无法创建同时使用 must be_== 和 failure 的测试

标签 scala testing specs2 scala-2.11 spec2

我是 Scala 和 Spec2 的新手。

我想创建以下测试,但编译器出错。

这是我想写的测试

import org.specs2.mutable._
import org.specs2.specification._
import org.specs2.matcher._
import org.specs2.matcher.MatchResult

class SimpleParserSpec extends Specification {

"SimpleParser" should {

val parser = new SimpleParser()

  "work with basic tweet" in {
      val tweet = """{"id":1,"text":"foo"}"""
      parser.parse(tweet) match {
        case Some(parsed) => {
                                parsed.text must be_==("foo")
                                parsed.id must be_==(1)
                              }
        case _ =>  failure("didn't parse tweet") 
      }
    }
  }
}

我得到错误: C:\Users\haques\Documents\workspace\SBT\jsonParser\src\test\scala\com\twitter\sample\simpleSimpleParserSpec.scala:17: 找不到类型为 org.specs2.execute.AsResult 的证据参数的隐式值[对象]

问候,

修希杜尔

最佳答案

编译器在这里产生错误,因为他试图将 MatchResult[Option[Parsed]]Result 类型的失败统一起来。它们统一为 Object 并且编译器无法为其找到 AsResult 类型类实例。您可以通过为失败案例提供另一个 MatchResult 来修复示例:

parser.parse(tweet) match {
  case Some(parsed) => {
    parsed.text must be_==("foo")
    parsed.id must be_==(1)
  }
  case _ =>  ko("didn't parse tweet")
}

okko 方法等同于 successfailure 但它们是 MatchResults 而不是 Results

关于scala spec2 我无法创建同时使用 must be_== 和 failure 的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25290067/

相关文章:

python - 跳过假设中的伪造示例

scala - 如何使用 scala 反射查找返回类型参数的方法的类型?

regex - 为什么 Scala 的组合器在解析大文件时解析速度很慢?我能做什么?

scala - 使代码的和平不可变

Scala:Mock init 因 Cats IO 类型参数而失败

scala - 为什么 Specs2 以随机顺序运行这些 `sequential` 测试?

scala - 具有 swagger 支持的 scalatra 应用程序的 spec2 测试失败

Scala Spray 提供文件附件

python - py.test -- 模拟常量并在测试函数中引发异常

ruby-on-rails - Ruby on Rails 中的全栈测试选项