Тест Mockito для сервисного вызова по коду Legacy - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю тестовый пример junit для устаревшего кода контроллера пружины, который вызывает службу (создает новый экземпляр вызова службы вместо autowire / 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();

    }

}

Вызовы Spy и Mocktio не позволяют использовать реальные методы. Пожалуйста, дайте знать, как издеваться над ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...