как игнорировать аргумент, передаваемый методу - PullRequest
0 голосов
/ 09 марта 2019

Я тестирую свой код scala и play, используя Mockito. Мой код использует метод save, который принимает аргумент User. Меня не волнует значение, переданное save. Я попытался закодировать это поведение следующим образом

when(mockUserRepository.save(any())).thenReturn(Future(Some(user)))

но я получаю ошибку

Error:(219, 36) not found: value any when(mockUserRepository.save(any())).thenReturn(Future(Some(user)))

Как указать any для scala кода в mockito?

По моему build.sbt. Я скачал только mockito-core. Мне тоже нужно что-то еще?

"org.mockito" % "mockito-core" % "2.24.5" % "test"

Ответы [ 3 ]

0 голосов
/ 09 марта 2019

Вы можете использовать org.mockito.Matchers

import org.mockito.Mockito._
import org.mockito.Matchers._

val mockUserRepository = mock[call_your_MockUserRepositiry_service] 
    // something like below 
    // val service = mock[Service[Any, Any]] OR
    // val mockService = mock[MyService]

when(mockUserRepository.save(any)) thenReturn(Future(Some(user)))

Пожалуйста, обратитесь https://www.programcreek.com/scala/org.mockito.Matchers

Обновление:

Если Matchers устарело в Mockito 2.0, вы можете использовать org.mockito.ArgumentMatchers

In Java Something like below

class Foo{
    boolean bool(String str, int i, Object obj) {
        return false;
    }
}

Foo mockFoo = mock(Foo.class);
when(mockFoo.bool(anyString(), anyInt(), any(Object.class))).thenReturn(true);

In Scala something like below

def setupService(inputResponse: Future[Unit]): AdminService = {
    val mockConnector = mock[MongoConnector]

    when(mockConnector.putEntry(ArgumentMatchers.any(), ArgumentMatchers.any())(ArgumentMatchers.any()))
      .thenReturn(inputResponse)

    new AdminService(mockConnector)
  }

Надеюсь, это поможет!

0 голосов
/ 09 марта 2019

Я бы сказал, что во избежание этой и многих других проблем, связанных с совместимостью Scala-Java, вы должны использовать версию Scala Mockito ( mockito-scala ) с ней, после добавления черты org.mockito.ArgumentMatchersSugar Вы можете написать

when(mockUserRepository.save(*)).thenReturn(Future(Some(user)))

Или, если вам нравится более похожий на скалы синтаксис

mockUserRepository.save(*) shouldReturn Future(Some(user))

Проверьте файл readme, чтобы увидеть больше примеров и специфических особенностей scala

0 голосов
/ 09 марта 2019

Попробуйте any[User] вместо any()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...