### Question:
ExploratoryServiceImpl implements ExploratoryService { @BudgetLimited @Override public String start(UserInfo userInfo, String exploratoryName, @Project String project) { return action(userInfo, project, exploratoryName, EXPLORATORY_START, STARTING); }  @BudgetLimited @Override String start(UserInfo userInfo, String exploratoryName, @Project String project); @Override String stop(UserInfo userInfo, String project, String exploratoryName); @Override String terminate(UserInfo userInfo, String project, String exploratoryName); @BudgetLimited @Override String create(UserInfo userInfo, Exploratory exploratory, @Project String project); @Override void updateProjectExploratoryStatuses(String project, String endpoint, UserInstanceStatus status); @Override void updateClusterConfig(UserInfo userInfo, String project, String exploratoryName, List<ClusterConfig> config); @Override Optional<UserInstanceDTO> getUserInstance(String user, String project, String exploratoryName); @Override Optional<UserInstanceDTO> getUserInstance(String user, String project, String exploratoryName, boolean includeCompResources); @Override List<UserInstanceDTO> findAll(); @Override List<UserInstanceDTO> findAll(Set<ProjectDTO> projects); @Override List<ClusterConfig> getClusterConfig(UserInfo user, String project, String exploratoryName); @Override ExploratoryCreatePopUp getUserInstances(UserInfo user);  }### Answer:
@Test public void start() { when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class)); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString())).thenReturn(userInstance); ExploratoryGitCredsDTO egcDtoMock = mock(ExploratoryGitCredsDTO.class); when(gitCredsDAO.findGitCreds(anyString())).thenReturn(egcDtoMock); ExploratoryActionDTO egcuDto = new ExploratoryGitCredsUpdateDTO(); egcuDto.withExploratoryName(EXPLORATORY_NAME); when(requestBuilder.newExploratoryStart(any(UserInfo.class), any(UserInstanceDTO.class), any(EndpointDTO.class), any(ExploratoryGitCredsDTO.class))).thenReturn(egcuDto); String exploratoryStart = "exploratory/start"; when(provisioningService.post(anyString(), anyString(), any(ExploratoryActionDTO.class), any())) .thenReturn(UUID); when(requestId.put(anyString(), anyString())).thenReturn(UUID); String uuid = exploratoryService.start(userInfo, EXPLORATORY_NAME, "project"); assertNotNull(uuid); assertEquals(UUID, uuid); statusEnvBaseDTO = getStatusEnvBaseDTOWithStatus("starting"); verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self")); verify(exploratoryDAO).fetchExploratoryFields(USER, PROJECT, EXPLORATORY_NAME); verify(provisioningService).post(endpointDTO().getUrl() + exploratoryStart, TOKEN, egcuDto, String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(exploratoryDAO, provisioningService, requestId); }