Test register acc spring

Test register acc spring
SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

czym może być spowodowany błąd w tescie org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException ?? przy kodzie testu

Kopiuj
    public void test_create_user_success() throws Exception {
    	User user =  new User(1, "Daenerys","Targaryes","emaill","haslo");
 
       when(userService.addWithDefaultRole(user));

        mockMvc.perform(
                post("/api/register")
                
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(asJsonString(user)))
        .andExpect(status().isCreated())
        .andExpect(header().string("location", containsString("api/user/1")));


   
        verify(userService, times(1)).addWithDefaultRole(user);
        verifyNoMoreInteractions(userService);
    } ```

https://github.com/PatrykBrzuchacz/SpringProjekt-master3-master
PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2787
0

Pokaż linię, w której NullPointerException zachodzi. Tylko nie np 34, bo w twoim kodzie nie ma numeracji. Pokaż konkretnie linijkę w której leci

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

pobawilem sie troche i teraz mam :

Kopiuj
 @Test
    public void test_create_user_success() throws Exception {
    	User user =  new User("Daenerys","Targaryes","ema@adsill","hasewlo");
 
       when(userService.addWithDefaultRole(user));

        mockMvc.perform(
                post("/api/register"))
        .andExpect(status().isOk())
        .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                      
        .andExpect(status().isCreated())
        .andExpect(header().string("location", containsString("api/user/1")));


   
        verify(userService, times(1)).addWithDefaultRole(user);
        verifyNoMoreInteractions(userService);
    }

a blad
http://wklej.org/id/3424837/
co moze byc tym spowodowane? dodam jeszcze controller:

Kopiuj
@PostMapping("/register")
		public ResponseEntity<Void> register(@RequestBody User user,BindingResult result,UriComponentsBuilder ucBuilder ) {
			
			validator.validate(user, result);
			if (result.hasErrors()){
	            return new ResponseEntity<Void>(HttpStatus.CONFLICT);}
			else {
		userService.addWithDefaultRole(user);
		 HttpHeaders headers = new HttpHeaders();
	        headers.setLocation(ucBuilder.path("/users/{id}").buildAndExpand(user.getId()).toUri());
	        return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
			}}
SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

linia bledu to .andExpect(status().isOk())

  • Rejestracja: dni
  • Ostatnio: dni
0

Zwracasz odpowiedź 201, a w teście sprawdzasz czy jest 200.

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

tzn to nie ten blad, zmienialem to i przez przypadek tylko zamiast OK jest crated, to nie o to chodzi

Aleksander Brzozowski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0
Kopiuj
when(userService.addWithDefaultRole(user)).thenReturn(user)

Tu moim zdaniem jest problem.
Mockito zapina się na usera po referencji - nie masz w klasie usera hashcode i equals.
Do kontrolera przychodzi obiekt user'a, który jest "kopią" twojego obiektu usera.

Swoją drogą to te testy są bez sensu.
Nie uważasz, że lepiej przetestować to, czy założony user, może być odnaleziony po ścieżce, która jest w location? Tylko proszę, nie używaj do tego mockito. Użyj jakiejś bazy w pamięci - h2, albo zaimplementuj samemu jakąś bazę na hash mapie. I tak cały kontekst springa wstaje Ci do testów, postawienie bazy h2 nie będzie tutaj kosztowne.

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

Jestem nowicjuszem a na jutro musze oddac ten projekt wiec nie mam juz czasu zmieniac ;/ musze zrobic jeszcze pare testow, trudno, na razie bedzie tak jak jest a kiedys je pozmieniam jak bedzie wiecej czasu,

Moglbys ktos prosze wytlumaczyc jak moge pozbyc sie tego bledu ?? http://wklej.org/id/3425068/
W wielu testach go mam, testy takie jak np : http://wklej.org/id/3425071/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.