2016-01-26 2 views
7

Я хотел бы заглушить один из методов класса scala с зависимостями. Есть ли способ достичь этого с помощью ScalaMock?Scala Mock partial stubbing

Вот упрощенный пример того, что у меня есть:

class TeamService(val dep1: D1) { 

    def method1(param: Int) = param * dep1.magicNumber() 

    def method2(param: Int) = { 
    method1(param) * 2 
    } 
} 

В этом примере я хотел бы издеваться method1(). Мой тест будет выглядеть так:

val teamService = ??? // creates a stub 
(teamService.method1 _).when(33).returns(22) 
teamService.method2(33).should be(44) 

Есть ли способ достичь этого?

+0

Я думаю, что если вы насмешливый некоторый класс, вы не хотите зависеть от его реализации, но теперь вы, кажется, пытаются зависеть от реализации 'method1' и' D1'. Возможно, информации недостаточно, но вы, возможно, должны высмеять все методы, которые вам нужно использовать. –

+0

Какова ваша резолюция по этому вопросу? –

+0

выглядит как scala mock, не поддерживает эту функцию :( – Danix

ответ

0

Вы должны высмеять dep1: D1, так что все будет хорошо работать. Это нехороший подход к макету «половины» или только к некоторым методам.

Mocking dep1: D1 - это правильный способ проверить его.

val mockD1 = mock[D1] 
val teamService = new TeamService(mockD1) 
(mockD1.magicNumber _).returns(22) 
teamService.method2(33).should be(44) 
Смежные вопросы