2015-06-14 5 views
4
лестницу

в РОУ scalamock, говорится, что:Как издеваются класс с притворным

mocking classes, traits and case classes

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

Я следующий случай класс:

case class DspaceItemWrapper(private val item: Item) 

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

val item = mock[DspaceItemWrapper] 

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

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

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

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

Maatari

+0

Связанные: https://stackoverflow.com/questions/14274020/scalamock-mock-a-class- что-принимает-аргументы – dskrvk

ответ

11

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

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

class MockableDspaceItemWrapper extends DspaceItemWrapper(null) 
val item = mock[MockableDspaceItemWrapper] 
+0

Есть запрос функции, чтобы сделать это возможным: https://github.com/paulbutcher/ScalaMock/issues/56 –

Смежные вопросы