You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Mockito测试Spring Boot中返回ModelAndView的Service方法

用Mockito测试返回ModelAndView的Service方法

完全可以对TestService中返回ModelAndView的getData(Model model)方法编写单元测试,以下是完整的测试实现及说明:

完整测试类代码

@ExtendWith(MockitoExtension.class)
class TestServiceTest {
    @InjectMocks
    private TestService testService;

    @Mock
    private TestServiceRepository testServiceRepository;

    @Mock
    private Model model;

    @Test
    void getData_shouldAddDataToModelAndReturnCorrectModelAndView() {
        // 准备模拟数据
        List<TestDTO> mockData = Arrays.asList(new TestDTO(), new TestDTO());
        // 配置Mock仓库的行为:调用findAll时返回模拟数据
        when(testServiceRepository.findAll()).thenReturn(mockData);

        // 调用待测试的方法
        ModelAndView result = testService.getData(model);

        // 验证Model是否被正确调用:添加了名为"data"的属性,值为模拟数据
        verify(model).addAttribute("data", mockData);
        // 验证返回的ModelAndView视图名称是否为"index"
        assertEquals("index", result.getViewName());
        // 可选:直接验证ModelAndView中的模型数据是否正确
        assertEquals(mockData, result.getModel().get("data"));
    }
}

关键说明

  • 无需使用@SpringBootTest:这是单元测试,仅需@ExtendWith(MockitoExtension.class)即可,避免加载整个Spring上下文,提升测试速度。
  • 模拟依赖:通过@Mock注解模拟TestServiceRepository和Model,完全隔离数据库等外部依赖。
  • 行为验证:
    1. 配置仓库方法的返回值,确保测试可控;
    2. 验证Model的addAttribute方法是否按预期调用;
    3. 检查返回的ModelAndView的视图名称和模型数据是否符合业务预期。

内容的提问来源于stack exchange,提问作者user19296905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:12:51