2016-05-10 2 views
1

это мой контроллер ...java.lang.AssertionError: Статус ожидается: <200> но: <400> в JUnit

@GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    @Path("/categories") 
    public POSResponse getAllCategories() { 
     String countryCode="1"; 
     return infoService.getAllCategories(countryCode); 
    } 

это мой testController ....

@Mock 
    InfoService infoService; 
    @InjectMocks 
    private InfoController infoController; 

    private MockMvc mockMvc; 
    @Before 
    public void setUp() { 
     MockitoAnnotations.initMocks(this); 
     mockMvc = MockMvcBuilders.standaloneSetup(infoController).build(); 
    } 

    @Test 
    public void getAllCategoriesTest() throws Exception { 
     POSResponse response=new POSResponse(); 
     Category category=new Category(); 
     category.setCountryCode(1); 
     category.setDescription("Mother Dairy"); 
     response.setResponse(category); 

     when(infoService.getAllCategories("1")).thenReturn(response); 

     mockMvc.perform(get("/categories")) 
       .andExpect(status().isOk()) 
       .andExpect(content().contentType(APPLICATION_JSON_UTF8)) 
       .andExpect(jsonPath("$.id", is(1))) 
       .andExpect(jsonPath("$.description", is("Mother Dairy"))); 

     verify(infoService, times(1)).getAllCategories("1"); 
     verifyNoMoreInteractions(infoService); 
    } 

я использую Джерси контроллер. , когда я называю метод я получил сообщ ошибка "java.lang.AssertionError: Статус ожидается: < 200>, но был: < 400>"

+5

в контроллере имя параметра «videoid», а в тесте «videoId». Обратите внимание на случай «i» в Id –

+0

. Каков результат в файлах журналов? У вас должна быть панель с дополнительными пояснениями. – dunni

+0

видеоid! = ВидеоId. Другое дело, как вы издеваетесь над менеджером. Вы не можете издеваться над статическими методами (я предполагаю, что вы используете Mockito). Если это просто typo (manager - это экземпляр), вы должны перемещаться, когда (...) ... перед вызовом mockMvc, потому что вы, вероятно, получите нулевой ответ. –

ответ

1

HTTP 400 Стенды для Bad Request, который в соответствии с specification должны быть возвращается, когда:

The request could not be understood by the server due to malformed syntax.

Поскольку в контроллере вы определили: @RequestParam(value = "videoid", required = true) String videoId) и в тесте вы передаете VideoID, весна не в состоянии соответствовать VideoID, который является обязательным параметром и, таким образом, повышает 400 ошибку.

Обратите внимание, что параметр в вашем запросе должен соответствовать тому, что вы определили как value в RequestParam, а не в параметре.

0

Один из способов решения является добавление (MVC: аннотация привода):

в файле XML, где вы упомянули всю конфигурацию пружины.

Когда вы выполняете тестовый пример, журналы говорят, что данный шаблон url он не найдет. Даже журналы сказали, что не нашли контроллера.

Возможно, это поможет кому-то.

Смежные вопросы