Что является хорошей практикой для создания контрольного примера в классе, где одна функция вызывает другую функцию того же класса в Mockito? - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть класс 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 ()?

Может, кто-нибудь подскажет мне, что такое хорошая практика в этом сценарии?

...