Использование любой () для заглушки перед вызовом.thenReturn не удалось
Мой первый вопрос в Stackru. Пытался найти ответ, но не смог найти ни одной связанной с моей проблемой.
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatra.test.scalatest.ScalatraFunSuite
import org.mockito.Mockito.when
import org.mockito.Matchers.any
@RunWith(classOf[JUnitRunner])
@Category(Array(classOf[DatabaseTest]))
class Test extends ScalatraFunSuite {
test("Test") {
when(pre.findProduct(any[Seq[Sone]]))
.thenReturn(Util.createProduct())
when(ft.findProduct(any()))
.thenReturn(Util.createFT())
when(interval.findSones(any()))
.thenReturn(Util.createInterval())
//The rest is code to utilise the above
}
У меня есть тестовый код выше, написанный на Scala и использующий Mockito. Вот ошибка, которую я получаю при запуске:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: неуместное сопоставление аргументов обнаружено здесь:
-> в org.Test.$anonfun$new$1(Test.scala:23)
Вы не можете использовать сопоставления аргументов вне проверки или заглушки. Примеры правильного использования сопоставителей аргументов: when(mock.get (anyInt ())). ThenReturn (null); doThrow (new RuntimeException ()). when(mock).someVoidMethod(anyObject()); проверить (фиктивный).someMethod(содержит ("Foo"))
Кроме того, эта ошибка может появиться, потому что вы используете сопоставления аргументов с методами, которые нельзя смоделировать. Следующие методы не могут быть определены / проверены: final / private / equals () / hashCode (). Методы насмешек, объявленные в закрытых родительских классах, не поддерживаются.
То есть оба ft.findProduct(any())
а также interval.findSones(any())
получите ту же ошибку. Временно исправлено использование фиксированного целого числа, то есть:
test("Test") {
when(pre.findProduct(any[Seq[Sone]]))
.thenReturn(Util.createProduct())
when(ft.findProduct(1)) //any() => 1
.thenReturn(Util.createFT())
when(interval.findSones(3)) //any() => 3
.thenReturn(Util.createInterval())
//The rest is code to utilise the above
}
ПРИМЕЧАНИЕ: также пытался использовать anyInt()
, который дал ту же ошибку.
Мой вопрос: что-то не так с моим кодом? Надеюсь, я смог прояснить мою проблему.