scala spec2我无法创建一个必须同时使用_ ==和失败的测试

sho*_*odz 8 testing scala 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") 
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

问候,

Shohidul

Eri*_*ric 8

编译器在这里产生错误,因为他试图将a 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")
}
Run Code Online (Sandbox Code Playgroud)

okko方法的等价successfailure,但MatchResults 而不是被Results.