Ich habe einen Specs-Test erstellt, um einige JSON-Parsing zu validieren. Obwohl der Test perfekt funktioniert, fühlt es sich ziemlich laut an.Gibt es einen Specs Matcher, der die Option Option und Entweder
Ich frage mich, ob es in den Spezifikationen vorhandenen Code gibt, um Option und Entweder?
"twitter json to Scala class mapper" should {
"parsing a tweet" in {
TwitterJsonMapper.tweetP(tweetS) match {
case Right(t: Tweet) => {
implicit def unOption[T](t: Option[T]): T = t.get
implicit def unEither[T](t: Either[T,Throwable]): T = t match {case Left(left) => left ;case Right(t) => throw t}
"test id" in {
true must_== (t.id.get == 228106060337135617l)
}
"test id_str" in {
true must_== (t.id_str.get == "228106060337135617")
}
"test time" in {
true must_== (t.created_at.getHours == 13)
}
}
case Left((pe: JsonParseException, reason: String)) => fail(reason + "\n" + pe)
}
}
}
//The Tweet is produced from JSON using Fasterxml's Jackson-Scala library.
//I want to use Option or Either monads over all child attributes - for the usual reasons.
case class Tweet(
@BeanProperty contributors: Option[String],
@BeanProperty coordinates: Option[String],
@BeanProperty @JsonDeserialize (
using = classOf[TwitterDateDeserializer]
) created_at: Either[Date,Throwable],
@BeanProperty favorited: Boolean = false,
//elided etc etc
@BeanProperty id_str: Option[String]
}
Ja, die Matcher Führung sehen: http://etorreborre.github.com/specs2/guide/org.specs2.guide.Matchers.html#Matchers –
Ah, ok. Ich vergaß zu sagen, ich bin immer noch in Specs 1. Ich hatte nur so viel Zeit für die Aktualisierung meiner Bibliotheken. Ist das Feature nicht in Specs 1? –
Es ist einfach so schwierig, eine zuverlässige scala/maven/eclipse/specs - toolchain zu bekommen - und läuft. Ich habe Spezifikationen, um mit Eclipse zu arbeiten und diesen Teil meiner Abhängigkeiten eingefroren. –