#programowanie #java
Cze,
Mam pewien problem z mockowaniem serwisu w moim teście (dopiero zaczynam zabawę z mockito). Sytuacja wygląda tak, mam serwis który w sobie ma kilka innych serwisów (wstrzykuje za pomocą @autowired). Klasa testowa ma takie anotacje:
Mam coś takiego w beforze:
I niestety to nie działa, pomimo wywołania metody getStockNameFromWeb, wywołana jest metoda serwisu a nie mojego mockowanego obiektu. Da się jakoś wymieszać spring injection z mockowaniem? Bo chciałbym, aby pozostałe serwisy korzystały z własnych implementacji a tylko dla tego jednego użyć mockowania.
Cze,
Mam pewien problem z mockowaniem serwisu w moim teście (dopiero zaczynam zabawę z mockito). Sytuacja wygląda tak, mam serwis który w sobie ma kilka innych serwisów (wstrzykuje za pomocą @autowired). Klasa testowa ma takie anotacje:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfigurationMam coś takiego w beforze:
@Before
public void init() {
mocktockDetailsWebParser = Mockito.mock(StockDetailsWebParser.class);
when(mocktockDetailsWebParser.getStockNameFromWeb(anyObject())).thenReturn("AAA AAA");
ReflectionTestUtils.setField(stockTickerUpdater, "detailsParser", mocktockDetailsWebParser);I niestety to nie działa, pomimo wywołania metody getStockNameFromWeb, wywołana jest metoda serwisu a nie mojego mockowanego obiektu. Da się jakoś wymieszać spring injection z mockowaniem? Bo chciałbym, aby pozostałe serwisy korzystały z własnych implementacji a tylko dla tego jednego użyć mockowania.
- Najlepsze
- Wszystkie komentarze







Co do wstrzykiwania mocków to nie wiem jak to w springu (korzystam tylko z jee) ale ja robię tak: obiekt mockowany ma adnotację @Mock a klasa która ma z tego mocka korzystać @InjectMocks
jeśli dobrze rozumiem co chcesz uzyskać, to stwórz inner-class z anotacją
@Configuration, która tworzy twoje mockowe beany używając@Bean. Powinny one być bezpośrednio wstrzyknięte do testowanego serwisu i do samego testu, żebyś mógł je w@Beforeodpowiednio skonfigurować.