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

Junit - stub metody która jest wywoływana w metodzie?
  • Rejestracja: dni
  • Ostatnio: dni
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) :

Kopiuj
    class Manager {

        public Integer dealWithSomething() {

            Integer number = retrieveSomething();

            return number;
        }

        public Integer retrieveSomething(){
            return 123123;
        }
    }

I teraz test:

Kopiuj

    @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);
    }

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Dlaczego chciałbyś coś takiego zrobić?

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

  • Rejestracja: dni
  • Ostatnio: dni
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ć

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.
jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.