使用mockMvc进行Spring JUnit测试

yi0zb3m4  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(144)

我正在尝试使用spring和mockito对我的rest控制器进行单元测试。这是我的主控制器方法。

  1. public static final String AUTHENTICATE_USER_URI = "/user/authenticate";
  2. private static final Logger logger = LoggerFactory.getLogger(RestfulController.class);
  3. @Autowired
  4. User user;
  5. @Autowired
  6. AuthenticationService authService;
  7. @CrossOrigin
  8. @RequestMapping(value = (AUTHENTICATE_USER_URI), method = RequestMethod.GET, produces = "application/json")
  9. private User getUserAuthenticationDetails(
  10. @RequestParam("name") String name,
  11. @RequestParam("password") String password) throws NamingException,
  12. AuthenticationException {
  13. boolean isAuth = true;
  14. // checks user credentials
  15. isAuth = authService.isAuthenticated(name, password);
  16. if (isAuth) {
  17. logger.debug("User is authenticated");
  18. user = authService.getUserDetails(user, name);
  19. // // persistUserInDB(user);
  20. return user;
  21. } else {
  22. logger.debug("User is not authenticated");
  23. return null;
  24. }
  25. }

字符串
下面是我的JUnit测试:

  1. @RunWith(MockitoJUnitRunner.class)
  2. public class RestfulControllerTest {
  3. private static final String AUTHENTICATE_USER_TEST_URI = "http://localhost:8086/LDAPAuthenticationApp/user/authenticate";
  4. private MockMvc mockmvc;
  5. @Mock
  6. private AuthenticationService authService;
  7. @Before
  8. public void setUp() {
  9. mockmvc = MockMvcBuilders.standaloneSetup(new RestfulController())
  10. .setHandlerExceptionResolvers(exceptionResolver())
  11. .setMessageConverters(messageConverters())
  12. .build();
  13. }
  14. private MappingJackson2HttpMessageConverter messageConverters(){
  15. MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
  16. return converter;
  17. }
  18. private HandlerExceptionResolver exceptionResolver() {
  19. // exceptionResolver implementation here
  20. }
  21. // success test case
  22. @Test
  23. public void testGetUserAuthenticationDetails() throws Exception {
  24. String[] name={"user1","user2","user3"};
  25. String value="test pass";
  26. when(authService.isAuthenticated(any(String.class), any(String.class))).thenReturn(true);
  27. when(authService.getUserDetails(any(User.class),any(String.class))).thenReturn(any(User.class));
  28. for(int i=0;i<3;i++){
  29. mockmvc.perform(get(AUTHENTICATE_USER_TEST_URI).param("name", name[i]).param("password", value))
  30. .andDo(print()).andExpect(MockMvcResultMatchers.status().isOk())
  31. .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON));
  32. }
  33. verify(authService, atMost(3)).isAuthenticated(any(String.class), any(String.class));
  34. }


在输出响应中,测试失败,因为它得到404错误,但它期望200成功代码。我认为我已经正确设置了独立配置,我可能做错了什么?为什么URI没有正确Map到方法?请注意,它是正确的工作,从应用程序的前端相同的URI。使用Chrome的Postman工具:
http://localhost:8086/LDAPAuthenticationApp/user/authenticate?name=amol84&password=testpass

efzxgjgh

efzxgjgh1#

你可以试试这个URL:

  1. private static final String AUTHENTICATE_USER_TEST_URI = "/user/authenticate";

字符串

相关问题