Тестировать контроллер с помощью Junit? - PullRequest
0 голосов
/ 23 ноября 2018

У меня возникли проблемы с настройкой модульного теста с приложением весенней загрузки.Моя основная проблема связана с объектом «модель», который необходим в моем контроллере, но я не могу найти способ воссоздать его в моем тесте, который необходим для использования моей функции.

вот функция, которую я хочу проверить

@Controller
public class AjoutAbscenceControler {

  @Autowired
  private AbsenceRepository absenceRepository;

  @RequestMapping(value = { "/addAbsence" }, method = RequestMethod.GET)
  public String showAddAbsencePage(Model model) {

    Absence absence = new Absence();
    model.addAttribute("Absence", absence);

    return "addAbsence";
  }

  @RequestMapping(value = { "/addingAbsence" }, method = RequestMethod.POST)
  public String saveAbsence(Model model, @ModelAttribute("absence") Absence absence) {

    if (absence.getName() != null && absence.getName().length() > 0) {
      absenceRepository.save(absence);
    }
    return "redirect:/userList";
  }

}

Я пробовал что-то подобное

@RunWith(MockitoJUnitRunner.class)
public class AjoutAbscenceControlerTest {

  @Mock
  VacationRepository vacationRepository;
  @Mock
  CategoryRepository categoryRepository;
  @InjectMocks
  AjoutAbscenceControler controler;
  public MockMvc mockMvc;
  @Before
  public  void  setUp() throws Exception{
    mockMvc = MockMvcBuilders.standaloneSetup(controler).build();
  }
  @Test
  public void showAddAbsencePagetest() {
  AjoutAbscenceControler ajoutAbscenceControler =new AjoutAbscenceControler();

    assertEquals("addAbsence",ajoutAbscenceControler.showAddAbsencePage(controler));
  }
}

, но я не нашел способа создать springfarmwork.ui.Model

1 Ответ

0 голосов
/ 23 ноября 2018

Если вы тестируете логику вашего контроллера, вам, вероятно, не следует создавать объект Model, а надо его высмеивать и проверять взаимодействие с ним:

@Mock
private Model model;

@Test
public void showAddAbsencePagetest() {
    // Should probably be initialized in a @Before method,
    // Initialized here for clarity only
    AjoutAbscenceControler ajoutAbscenceControler = new AjoutAbscenceControler();

    assertEquals("addAbsence", ajoutAbscenceControler.showAddAbsencePage(model));

    Mockito.verify(model).addAttribute(eq("Absence"), any(Absence.class));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...