Mockito测试旧版代码的服务调用

时间:2020-04-22 15:57:52

标签: spring-mvc junit mockito partial-mocks

我正在为调用服务的旧版弹簧控制器代码创建junit测试用例(创建服务调用的新实例,而不是自动装配/ spring bean)。我希望模拟服务类调用。请告知是否有可能。
更改遗留代码对我来说不是一种选择。

public class WebController {

@PostMapping("/api/op1")
   public @ResponseBody String validate(ModelMap model,HttpSession session,HttpServletRequest request){
        ---
        --
        Service service = new Service();
        service.invoke(param1,param2);
        ----
        ---
   }
}

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class WebControllerTest{
    private MockMvc mockMvc;
    private WebController classUnderTest;

    @Test
    public void validat() throws Exception {
        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();     

        //Service service = spy(Service.class);
        //doReturn(new ServiceCallResponse()).when(service).validate( any(String.class),any(String.class));

        Service service = Mockito.mock( Service.class, CALLS_REAL_METHODS );
        doReturn(new ServiceCallResponse()).when(service).validate(any(String.class),any(String.class));


        MvcResult result = mockMvc.perform(
                post("/validate").params(params).session(new MockHttpSession()))                            
                .andExpect(status().isOk())
                .andReturn();

    }

}

间谍和Mocktio调用的真实方法选项不起作用。请让我们知道如何模拟它。

0 个答案:

没有答案