Почему не вызывается метод в тестах

Пытаюсь разобраться с mockito. Код сильно упростил, чтобы уменьшить его. Переменная value тут только для

Имеется сервис

@Service
@Getter
@Setter
public class CalService {
  private Integer value;
  public Integer addAttr(DataAtributes attr) {
    return 0;
  }
  public void changeValue(int val) {
    log.info("start changeValue");
    setValue(359 + val);
  }
}

и еще один класс, который вызывает метод из CalService

@Component
public class GetCalcService {
  @Autowired
  private CalService calService ;
  DataAtributes dataAtributes;
  public Integer setCalc() {
    dataAtributes = new DataAtributes(1,"test");
    Integer val = calService.addAttr(dataAtributes);
    calService.changeValue(15);
    return val;
  }
}

и сам класс тестирования

@SpringBootTest
public class CaclServisTest {
  @Mock
  CalService calcService;
  @InjectMocks
  GetCalcService getCalcService ;
  @Test
  void add() {
    DataAtributes dataAtributes = new DataAtributes(1,"test");
    when(calcService.addAttr(dataAtributes)).thenReturn(57);
    Integer calc = getCalcService.setCalc();
    log.info("calc = " + calc);      
  }
}

Почему при запуске теста и вызове метода getCalcService.setCalc метод calService.changeValue(15) не вызывается?


Ответы (1 шт):

Автор решения: Igor

Потому что это не настоящий CalService, a mock.

when(calcService.changeValue(anyInt())).thenCallRealMethod();
→ Ссылка