Frage

What do I need to do to pass in containTheSameElementsAs as the argument for a java.util.List parameter

For example:

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

Running a specs2 SpecificationWithJunit Test with the following code:

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

Right now I'm getting the error:

found : org.specs2.matcher.Matcher[Traversable[Bar]]

required: java.util.List[Bar]

War es hilfreich?

Lösung

You need to "adapt" the matcher to become a Matcher[java.util.List[Bar]], like this:

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

The ((_: java.util.List[Int]).toList) part transforms the matcher argument so that it has the type expected by the matcher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top