Temat już wałkowany kilka razy ale przydałaby się jakaś dobra dusza potrafiąca pomóc. Mam metodę którą przetestowałam w postamanie i fajnie działa,ale chce mieć test dla tej metody i to już niestety nie wychodzi już tak super.
Najepierw dla wglądu wrzucę tylko kod metody :
@PostMapping("/addPeopleToTeams/{teamId}/{personId}")
@ResponseBody
public ResponseEntity<?> addPeopleToTeam(@PathVariable Long teamId, @PathVariable Long personId) {
TeamsAndPersonsId teamsAndPersonsId = new TeamsAndPersonsId(personId, teamId);
teamService.findTeamById(teamsAndPersonsId.getTeamId());
personService.findById(teamsAndPersonsId.getPersonId());
teamService.addPersonsToTeams(personId, teamId);
return ResponseEntity.ok(teamsAndPersonsId);
}
Dla tej metody chciałabym stworzyc junit test ale co napiszę to się krzacz.
Aktualnie mój niedziałający kod wygląda następująco:
```java
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class TeamControllerTest {
private ObjectMapper mappingObject = new ObjectMapper();
private MockMvc mockMvc;
@Mock
private TeamService teamService;
@Mock
private PersonService personService;
@Before
public void initTest() {
mockMvc = MockMvcBuilders
.standaloneSetup(new TeamController(teamService, personService))
.setControllerAdvice(GlobalExceptionHandler.class)
.build();
}
@Test
public void shouldAddPersonToTeam() throws Exception {
TeamDto teamDto = prepareTeamDto();
PersonDto personDto = preparePersonDto();
when(teamService.createTeam(teamDto)).thenReturn(Response.ok().build());
when(personService.addPerson(personDto)).thenReturn(Reponse.ok().build());
// when(teamService.addPersonsToTeams())
mockMvc.perform(post("/addPeopleToTeams/{teamId}/{personId}", 1, 1))
.andExpect(status().isOk());
}
teraz ten kod nawet się nie skompiluje ale problemem są linijki when - tutaj gdzie mam theReturn intelij chce pobrać Response z adnotacja coyote wtedy nie rozpoznaje metody ok. build. Przyznam że całkiem mi się to wysypało i troszkę się pogubiłam.