specs2 containsTheSameElementsAs在参数为java.util.List时不起作用

时间:2014-02-21 22:18:56

标签: scala specs2 scala-java-interop

我需要做什么来传入containsTheSameElementsAs作为java.util.List参数的参数

例如:

 class Foo() {
   void javaList(List<Bar> bars) = ???
 }

使用以下代码运行specs2 SpecificationWithJunit Test:

 val foo = mock[Foo]
 ...
 got {
    one(foo).javaList(containTheSameElementsAs(SOME_LIST))
 }

现在我收到了错误:

发现:org.specs2.matcher.Matcher [Traversable [Bar]]

必需:java.util.List [Bar]

1 个答案:

答案 0 :(得分:1)

你需要“匹配”匹配器成为Matcher[java.util.List[Bar]],如下所示:

import scala.collection.JavaConversions._

class Foo {
  def javaList(bars: java.util.List[Int]) = bars
}

val foo = mock[Foo]

foo.javaList(java.util.Arrays.asList(1, 2))

got {
   one(foo).javaList(containTheSameElementsAs(Seq(1, 2)) ^^ ((_: java.util.List[Int]).toList))
}

((_: java.util.List[Int]).toList)部分转换匹配器参数,使其具有匹配器所期望的类型。