Как издеваться над сервисом с Mockito? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть приложение оболочки пружины. Мне нужно проверить команды. Моя команда:

@Autowired
private RemoteService remoteService;

@ShellMethod
public String list(){
    List<String> items= remoteService.getAll();
    return items.toString();
}

Мой тест:

@Test
public void listCommandTest(){
    RemoteService remoteService=mock(RemoteService.class);
    when(remoteService.getAll()).thenReturn(new ArrayList<>());

    shell.evaluate(()->"list");

    verify(remoteConfigService).getAll();
}

Мне не нужно вызывать реальный метод getAll () RemoteService, но он вызывается. Как это исправить?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Как вы вводите макетированный сервис в тестируемый код?

Есть два варианта:

1) Внедрить проверенную службу через конструктор

@Autowired
public ShellCommands(RemoteService remoteService) {
    this.remoteService = remoteService;
}

2) Создать тестовую конфигурацию

@Configuration
public class TestConfiguration {
    @Bean
    RemoteService remoteService() {
        RemoteService remoteService=mock(RemoteService.class);
        when(remoteService.getAll()).thenReturn(new ArrayList<>());
        return remoteService;
    }
}
0 голосов
/ 27 апреля 2018

Вы издеваетесь над методом when(remoteService.getAll(anyString())) и вызываете getAll().

Заменить when(remoteService.getAll(anyString())) на when(remoteService.getAll())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...