Как издеваться над классом с помощью scala mock

в документе scalamock сказано, что:

насмешливые классы, черты и классы случаев

является одной из поддерживаемых функций.

У меня есть следующий класс case:

case class Thing(private val item: Item)

Когда я делаю:

val item = mock[Thing]

Я получаю следующую ошибку:

Error:(18, 24) not enough arguments for constructor Thing:
 (item: org.dspace.content.Item)org.iadb.poolpartyconnector.dspaceutils.Thing.
Unspecified value parameter item.
    val item = mock[Thing]
                   ^

Я знаю, что мог бы реализовать для него интерфейс, но в любом случае это помогло бы мне лучше понять, как издеваться над классом случая/классом, у которого есть конструктор.

Большое спасибо,

Маатари


person MaatDeamon    schedule 14.06.2015    source источник
comment
Связанный: stackoverflow.com/questions /14274020/   -  person dskrvk    schedule 12.02.2016


Ответы (1)


В настоящее время вы не можете имитировать классы, для которых не определен конструктор по умолчанию.

Вы можете обойти это, создав подкласс с определенным конструктором по умолчанию и издеваясь над этим подклассом:

class MockableThing extends Thing(null)
val item = mock[MockableThing]
person Pawel Wiejacha    schedule 15.06.2015