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