Использование любой () для заглушки перед вызовом.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(), который дал ту же ошибку.

Мой вопрос: что-то не так с моим кодом? Надеюсь, я смог прояснить мою проблему.

0 ответов

Другие вопросы по тегам