VetController
@Controller
public class VetController {
private final ClinicService clinicService;
@Autowired
public VetController(ClinicService clinicService) {this.clinicService = clinicService;}
@RequestMapping(value = { "/vets.html"})
public String showVetList(Map<String, Object> model) {
// Here we are returning an object of type 'Vets' rather than a collection of Vet objects
// so it is simpler for Object-Xml mapping
Vets vets = new Vets();
vets.getVetList().addAll(this.clinicService.findVets());
model.put("vets", vets);
return "vets/vetList";
}
}
VetControllerTest
@ExtendWith(MockitoExtension.class)
class VetControllerTest {
@Mock
ClinicService clinicService;
@Mock
Map<String, Object> model;
@InjectMocks
VetController controller;
List<Vet> vetsList = new ArrayList<>();
MockMvc mockMvc;
@BeforeEach
void setUp() {vetsList.add(new Vet());
given(clinicService.findVets()).willReturn(vetsList);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();}
@Test
void testControllerShowVetList() throws Exception {mockMvc.perform(get("/vets.html"))
.andExpect(status().isOk())
.andExpect(model().attributeExists("vets"))
.andExpect(view().name("vets/vetList"));
}
}