Testes Api Spring Boot não validam classe service

Tentei praticar testes na API abaixo desenvolvida com Spring Boot.

O serviço retorna um boolean.
A chamada realizada pelo teste chega até a classe Controller mas não avança até a classe Service e sempre retorna false.

Procurei bastante coisa mas não entendi o que está errado. Testes da controller não avançam nas classes adiante?

Controller

    @RestController
    @RequestMapping(value = "/validate")
    public class CredentialController {
    
    	@Autowired 
    	private CredentialService service;
    	
    	@GetMapping("/password/{value}")
    	public ResponseEntity<Boolean> passwordValidator(@PathVariable String value) {
    		Boolean response = service.passwordValidator(value);
    		return ResponseEntity.ok().body(response);
    	}
    }

Service

@Service
public class CredentialService {
	
	public boolean passwordValidator(String password) {		

		return true;
	}
}

Teste

    @ExtendWith(SpringExtension.class)
    @WebMvcTest(CredentialController.class)
    public class CredentialControllerTest {
    	
    	@Autowired
    	private MockMvc mockMvc;
    	
    	@MockBean CredentialService credentialService;
    	
    	@Test
    	public void testPasswordValidator() throws Exception {
    		mockMvc
    			.perform(MockMvcRequestBuilders.get("/validate/password/{value}", "AbTp9!fok")
    			.contentType(MediaType.APPLICATION_JSON))
    			.andExpect(MockMvcResultMatchers.status().isOk())
    			.andDo(MockMvcResultHandlers.print());
    	}
    }

MockHttpServletResponse:

Status = 200
Error message = null

Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", Content-Type:"application/json", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"]

Content type = application/json
Body = false

Os unit tests devem testar o teu bloco de código e não todas as camadas. Por isso dizes que o teu service é um @MockBean.
Desta forma não estás a usar o teu service mas um objecto mocked, onde tu podes controlar o seu retorno para dessa forma testares o teu controller contra os diferentes retornos do service.

1 curtida