繁体   English   中英

测试Web层时模拟控制器类的方法

[英]Mocking a method of controller class when testing the web layer

我有一个控制器类ABCController.java 我正在为该类编写Web层测试用例。

    @WebMvcTest(controllers = ABCController.class)
    @RunWith(SpringRunner.class)
    public class ABCControllerIntegrationTest {
        @Autowired
        private MockMvc mockMvc;


        @Test
        public void testSuccessfulCall(){
            mockMvc.perform(get("/pgdDataUrlGet"))
            .andExpect(status().isOk());
        }
    }

我的ABCController.class generateSuccessCallEmail()有一个函数。 我不希望在运行测试用例时调用此函数?

我想做这样的事情:

doNothing.when(controllerObject).generateSuccessCallEmail(anyString);

任何人都可以通过正确的方法来帮助我吗? 问题是使用注解@WebMvcTest加载了Controller。 那么我该如何在控制器类中模拟一个函数呢?

我建议采用以下方法:

  • 将您的方法提取到另一个bean( EmailService
  • EmailService注入您的控制器
  • 使用控制器中服务Bean中的emailService.generateSuccessCallEmail()方法。

在测试方面,添加

@MockBean
EmailService emailService;

并对此对象进行模拟方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM