Junit - stub metody która jest wywoływana w metodzie?

0

Witam,
W jaki sposób mogę sobie zestubbować zachowanie metody, która jest wywoływana wewnątrz metody?

Prosty przykład (który mam nadzieje zobrazuje o co mi chodzi) :

    class Manager {

        public Integer dealWithSomething() {

            Integer number = retrieveSomething();

            return number;
        }

        public Integer retrieveSomething(){
            return 123123;
        }
    }

I teraz test:


    @Mock
    private Manager manager;


    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void shouldDoSomething(){

        when(manager.retrieveSomething().thenReturn(5));

        int number = rentManager.dealWithSomething();

        assertEquals(5, number);
    }

0

Dlaczego chciałbyś coś takiego zrobić?

Brzmi trochę jak poznałem młotek i wszystko dookoła stało się gwoździem :-)

0
Patryk27 napisał(a):

Dlaczego chciałbyś coś takiego zrobić?

Brzmi trochę jak poznałem młotek i wszystko dookoła stało gwoździem :-)

Dlatego, że w moim przypadku metoda retrieveSomething() woła inny mikroserwis, dlatego chciałbym sobie przyjąć jakąś wartość:)
Przykład trywialny, chodzi mi o to jak takiego czegoś dokonać

2
  1. Możesz zrobić tzw partial mocka, jeśli uważasz że to dobra droga ;]
  2. W praktyce to bez sensu. Testuj kod a nie mocki! Jeśli masz tam po spodem call do innego serwisu to mockuj ten serwis a nie swoją prywatną metodę która go woła.
0

Być może retrieveSomething powinno być osobną klasą wstrzykiwaną do klasy Manager. Może to być po prostu przekazanie tej klasy przez konstruktor klasy Manager. Wtedy mógłbyś tam łatwo podłożyć mocka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1