Przeprowadzam następujący test
Idea.findById(1).get.tags must equalTo(List[String]("internet, tecnología"))
i otrzymuję następujący błąd
[info] Idea.tags should
[error] x should retrieve a list of tag names for the idea
[error] "internet, tecnología": anon is not equal to "internet, tecnología": scala.collection.immutable.:: (IdeaTagSpec.scala:42)
to jest metoda, którą próbuję przetestować
lazy val tags: List[String] = {
Tag.findByIdea(this).map(_.name).toList
}
Mógłbym rozwiązać ten brzydki hack
( Idea.findById(1).get.tags.toString
must equalTo(List[String]("internet, tecnología").toString)
)
Ale jestem pewien, że jest lepszy sposób, aby to zrobić ...
-- EDYTOWAĆ --
przepraszam, to był głupi błąd z mojej strony (zamiast tego powinien być List („internet”, „tecnologia”))
w każdym razie komunikat o błędzie był dość mylący, dlatego zostawiam to pytanie tutaj ...
Odpowiedzi:
1 dla odpowiedzi № 1Sytuacja ulegnie poprawie w następnej wersji specs2. Jeśli wypróbujesz specs2-1.12.3-SNAPSHOT, otrzymasz:
List("1, 2, 3") must_== List("1", "2", "3")
"List("1, 2, 3"): scala.collection.immutable.$colon$colon[java.lang.String]"
is not equal to
"List("1", "2", "3"): scala.collection.immutable.$colon$colon[java.lang.String]"
Różnica cytatów wokół każdego elementu powinna pomóc, a jeśli typy elementów są różne, otrzymasz:
List(1, 2, 3) must_== List("1", "2", "3")
"List("1", "2", "3"): scala.collection.immutable.$colon$colon[java.lang.Integer]"
is not equal to
"List("1", "2", "3"): scala.collection.immutable.$colon$colon[java.lang.String]"
I wreszcie, w przypadku „normalnego” przypadku:
List(1, 2, 3) must_== List(3, 2, 1)
List(1, 2, 3) is not equal to List(3, 2, 1)