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 回答