gpt4 book ai didi

java - 使用 Junit 测试 Controller ?

转载 作者:行者123 更新时间:2023-11-30 01:59:15 28 4
gpt4 key购买 nike

我在使用 Spring Boot 应用程序设置单元测试时遇到了一些问题。我的主要问题是 Controller 中所需的“模型”对象,但我找不到在测试中重新创建它的方法,这是使用我的函数所必需的。

这是我要测试的功能

@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

最佳答案

如果您正在测试 Controller 的逻辑,您可能不应该创建 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));
}

关于java - 使用 Junit 测试 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449292/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com