Весеннее тестирование JUnit с использованием mockMvc

Я пытаюсь провести модульное тестирование моего контроллера отдыха, используя spring и mockito. Вот мой основной метод контроллера.

public static final String AUTHENTICATE_USER_URI = "/user/authenticate";

private static final Logger logger = LoggerFactory.getLogger(RestfulController.class);

@Autowired
User user;

@Autowired
AuthenticationService authService;

@CrossOrigin
@RequestMapping(value = (AUTHENTICATE_USER_URI), method = RequestMethod.GET, produces = "application/json")
private User getUserAuthenticationDetails(
        @RequestParam("name") String name,
        @RequestParam("password") String password) throws NamingException,
        AuthenticationException {
    boolean isAuth = true;

    // checks user credentials
    isAuth = authService.isAuthenticated(name, password);

    if (isAuth) {
        logger.debug("User is authenticated");
        user = authService.getUserDetails(user, name);
        // // persistUserInDB(user);
        return user;
    } else {
        logger.debug("User is not authenticated");
        return null;
    }
}

Вот мой тест JUnit:

@RunWith(MockitoJUnitRunner.class)
public class RestfulControllerTest {

    private static final String AUTHENTICATE_USER_TEST_URI = "http://localhost:8086/LDAPAuthenticationApp/user/authenticate";

    private MockMvc mockmvc;

    @Mock
    private AuthenticationService authService;

    @Before
    public void setUp() {
        mockmvc = MockMvcBuilders.standaloneSetup(new RestfulController())
            .setHandlerExceptionResolvers(exceptionResolver())
            .setMessageConverters(messageConverters())
            .build();
    }

    private MappingJackson2HttpMessageConverter messageConverters(){
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        return converter;
    }

    private HandlerExceptionResolver exceptionResolver() {
        // exceptionResolver implementation here
    }

    // success test case
    @Test
    public void testGetUserAuthenticationDetails() throws Exception {
        String[] name={"amol84","arpan","juhi"};
        String value="pegasus84";
        when(authService.isAuthenticated(any(String.class), any(String.class))).thenReturn(true);
        when(authService.getUserDetails(any(User.class),any(String.class))).thenReturn(any(User.class));
        for(int i=0;i<3;i++){
             mockmvc.perform(get(AUTHENTICATE_USER_TEST_URI).param("name", name[i]).param("password", value))
              .andDo(print()).andExpect(MockMvcResultMatchers.status().isOk())
              .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON));
    }
    verify(authService, atMost(3)).isAuthenticated(any(String.class), any(String.class));
}

В выходном ответе тест терпит неудачу, поскольку он получает ошибку 404, но ожидает код успеха 200. Что я могу сделать неправильно, поскольку я считаю, что правильно настроил автономную конфигурацию. Почему URI не сопоставляется с методом должным образом? Обратите внимание, что он работает правильно для того же URI из внешнего интерфейса приложения. Вот полный URI для правильного ответа 200, который я протестировал с помощью инструмента Postman для Chrome:

http://localhost:8086/LDAPAuthenticationApp/user/authenticate?name=amol84&password=pegasus84


person Amol Aggarwal    schedule 21.04.2016    source источник


Ответы (1)


Возможно, вам стоит попробовать с этим URL:

private static final String AUTHENTICATE_USER_TEST_URI = "/user/authenticate";
person Tom Van Rossom    schedule 21.04.2016