2

次のテストを実行しています

Idea.findById(1).get.tags must equalTo(List[String]("internet, tecnología"))

次のエラーが表示されます

[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)

これは私がテストしようとしている方法です

lazy val tags: List[String] = {
  Tag.findByIdea(this).map(_.name).toList
}

私はこの醜いハックでそれを解決することができました

( Idea.findById(1).get.tags.toString 
    must equalTo(List[String]("internet, tecnología").toString)
)

しかし、もっと良い方法があると確信しています...

- 編集 -

申し訳ありませんが、それは私の愚かな間違いでした (代わりに List("internet", "tecnologia") であるべきでした)

とにかく、エラーメッセージはかなり誤解を招くものでした。そのため、この質問をここに残しておきます...

4

1 に答える 1

1

この状況は、次の specs2 バージョンで改善される予定です。specs2-1.12.3-SNAPSHOT を試すと、次のようになります。

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]'

各要素を囲む引用符の違いが役立つはずです。要素のタイプが異なる場合は、次のようになります。

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]'

最後に、「通常の」ケースの場合:

List(1, 2, 3) must_== List(3, 2, 1)

List(1, 2, 3) is not equal to List(3, 2, 1)
于 2012-10-17T12:25:52.697 に答える