Как написать модульный тест для контроллера с несколькими атрибутами модели - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь написать модульный тест для моего контроллера, но мне нужна помощь, есть два modelAttribute как enum вне моего контроллера для использования во всех моих контроллерах, так что это мой код. Пожалуйста, помогите мне, я новичок втестовый блок.

@Autowired
private MaintenanceService maintenanceService;

@ModelAttribute("departments")
public List<Department> getDepartments(){
    return Arrays.asList(Department.values());
}

@ModelAttribute("servicetypes")
public List<ServiceType> getServiceTypes(){
    return Arrays.asList(ServiceType.values());
}

@GetMapping("/ListOfMaintenance")
public String showListOfMaintenancePage(Model model) {
    model.addAttribute("maintenance",new Maintenance());
    model.addAttribute("Maintenances",maintenanceService.retriveListOfMaintenance());
    return "List_Of_Maintenance";
}

1 Ответ

0 голосов
/ 09 декабря 2018

Полагаю, эта статья может вам помочь.

Аннотация @WebMvcTest в тестовом классе говорит Spring не раскрывать все детали приложения, а только те, которые связаны с APIВ твоем случае твои Controller с.Кроме того, он предоставляет вам удобный инструмент - класс MockMvc, который вы можете использовать для «выстрела» запросов к вашим контроллерам, как если бы они были настоящими HTTP-вызовами.Вы также можете утвердить вывод этих вызовов, чтобы проверить, действительно ли то, что вы ожидаете, должен делать ваш контроллер.Взгляните:

@RunWith(SpringRunner.class)
@WebMvcTest
public class WebLayerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void shouldReturnDefaultMessage() throws Exception {
        this.mockMvc.perform(get("/"))
                    .andDo(print())
                    .andExpect(status().isOk())
                    .andExpect(content().string(containsString("Hello World")));
    }
}
...