Как с помощью mockito подменить вызов метода который ни чего не возвращает
Пытаюсь с помощью mockito подменить вызов метода, который возвращает void. Код сильно упростил, чтобы уменьшить его. Имеется сервис
@Service
public class CalService {
public void createTable(DataAtributes attr) {
...
}
public Integer addAttr(DataAtributes attr) {
return 0;
}
}
и еще один класс, который вызывает метод из 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.createTable(dataAtributes);
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);
}
}
С методом addAttr все получилось. А вот как мне подменить вызов метода calService.createTable(dataAtributes) или сделать, так чтобы он не вызывался в тесте? Просто подменить метод setCalc нельзя, на самом деле в нем идет вызов нескольких методов и только один из них (createTable) необходимо подменить или проигногрировать.
Ответы (1 шт):
Автор решения: Roman Konoval
→ Ссылка
В Mockito есть несколько методов для работы с методами, которые возвращают void. В этом случае используйте Mockito.doNothing так:
Mockito.doNothing().when(calServiceMock).createTable(dataAttributes);