Вызов перегруженного универсального метода java из scala - PullRequest
8 голосов
/ 09 сентября 2011

Я использую Mockito для моделирования объекта с помощью метода, который возвращает непараметризованный ArrayList, и я не могу понять, как заставить это работать

Подпись метода для макета

public java.util.ArrayList getX()

Тестовый код

var mockee = mock(classOf[Mockee])
when(mockee.getX).thenReturn(Lists.newArrayList(x): ArrayList[_])

Это на самом деле прекрасно компилируется в IntelliJ, но во время выполнения выдает:

[error] ....scala:89: overloaded method value thenReturn with alternatives:
[error]   (java.util.ArrayList[?0],<repeated...>[java.util.ArrayList[?0]])org.mockito.stubbing.OngoingStubbing[java.util.ArrayList[?0]] <and>
[error]   (java.util.ArrayList[?0])org.mockito.stubbing.OngoingStubbing[java.util.ArrayList[?0]]
[error]  cannot be applied to (java.util.ArrayList[_$1])
[error]       when(mockee.getX).thenReturn(Lists.newArrayList(x): ArrayList[_])

1 Ответ

8 голосов
/ 11 октября 2011

Для меня работает следующее:

val mockee = mock(classOf[Mockee])
when[ArrayList[_]](mockee.getX).thenReturn(Lists.newArrayList)

при условии, что класс "Списки" взят из коллекций Google (теперь Гуава).

...