【问题标题】:scala specs2 error: anon is not equal scala.collection.immutablescala specs2错误:匿名不等于scala.collection.immutable
【发布时间】:2012-10-17 20:25:52
【问题描述】:

我正在运行以下测试

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
}

我可以用这个丑陋的 hack 解决它

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

但我确信有更好的方法来做到这一点......

-- 编辑--

抱歉,这是我犯的一个愚蠢的错误(应该是 List("internet", "tecnologia"))

无论如何,错误消息非常具有误导性,这就是我将这个问题留在这里的原因......

【问题讨论】:

  • 您使用的是哪个 specs2 版本?你能试试最新的 1.12.2 吗?如果这不起作用,请发布一个完全可执行的示例?谢谢。
  • 我用的是play framework 2附带的1.9版本,会尝试升级到1.12.2

标签: scala testing specs2


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多