У меня есть класс Util. java, который содержит некоторые функции следующим образом:
public Util {
UtilB b;
funcA() {
//someAction
String a = b.someMethod();
funcB();
}
funcB() {
//recursive call to funcB
funcC();
}
funcC() {
//some processing
}
}
Во время написания тестового примера в Mockito я сделал следующее:
public UtilTest {
@Mocks
UtilB b;
@InjectMocks
Util test;
@Test
public funcA() {
when(b.someMethod()).thenReturn("");
test.funcA();
}
}
Как видно выше, я не могу смутить вызов funcB () при вызове funcA (). Вызов будет go внутри funcB (). Я могу переместить funcB()
в другой класс, например someMethod()
в UtilB
, и смоделировать этот класс, например UtilB b
, и тест будет работать без фактического вызова funcB (), но это хорошая практика для go в отношении создания новые классы?
Кроме того, поскольку я тестирую класс Util, не стоит делать из него шпиона, а затем оперировать им, чтобы посмеяться над вызовом funcB (), верно?
Должен ли я вообще Mock funcB (), так как test.funcA()
будет охватывать funcB () и fun cC ()?
Может, кто-нибудь подскажет мне, что такое хорошая практика в этом сценарии?