Пересмешивание объектов конфигурации с помощью MockFactory - PullRequest
0 голосов
/ 17 мая 2018

Я делаю некоторые тесты, и во многих случаях у меня есть конфигурация FTP / HTTP.

Я работаю со Scala и следующими библиотеками в моем sbt:

"org.scalatest" %% "scalatest" % "3.0.1" % Test,
"org.scalamock" %% "scalamock" % "4.1.0" % Test,

Я делаю для следующего кода в качестве примера макет конфигурации внутри моего теста:

val someConfig = SomeConfig(
  endpoint = "", 
  user = "", 
  password = "", 
  companyName="", 
  proxy = ProxyConfig("", 2323)
)

Но я чувствую, что нехорошо делать это для каждой конфигурации, с которой я буду иметь дело ...

Я хотел бы создать следующее:

val someConfig = mock[SomeConfig]

но когда мой код пытается достичь свойства proxy, являющегося классом case, происходит сбой с исключением нулевого указателя.

Я хотел бы знать, как смоделировать классы case, которые содержат другие классы case, и сделать мой код немного более понятным, есть ли способ сделать это с MockFactory?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Параметры классов преобразуются в val поля, и ScalaMock имеет известное ограничение , когда он не может смоделировать val, поэтому я думаю, что это невозможно сделать напрямую с помощью ScalaMock.

У Mockito есть такая возможность.

0 голосов
/ 17 мая 2018

Вы можете попытаться смоделировать это так:

val someConfig = mock[SomeConfig]
when(someConfig.proxy).thenReturn(ProxyConfig("", 2323))

Таким образом, он вернется ProxyConfig("", 2323), когда вы попытаетесь получить someConfig.proxy.

Приведенный выше код использует Mockito из-за известное ограничение ScalaMock

...