Ошибка типа контента при макете статического метода - PullRequest
0 голосов
/ 19 октября 2018

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

Я не могу комментировать эту логику, и вместо этого я просто хочу издеваться над ней.Теперь макет работает, но я получаю новую ошибку следующим образом:

java.lang.AssertionError: Тип контента не установлен

Но у меня действительно указан тип контента,Пожалуйста, сообщите, что я делаю не так.

@Test
public void testMethod() throws Exception{

    // If I don't mock this, test will fail. 
    // If I don't mock this comment out logic in this method, test passes. 
    // If I mock this, test passes if I don't check for content type.
    // I am using Power Mockito. 

    mockStatic(MyStaticClass.class);
    doReturn("").when(MyStaticClass.class, "someMethod", any(Config.class), anyString());

    //also tried this, works. 
    //when(MyStaticClass.someMethod(any(Config.class), anyString())).thenReturn("");


    //as mentioned above this would work if I comment out logic in MyStaticClass. 
    mockMvc.perform(
                get("/api/some/a/b/c/d").accept(
                        MediaType.APPLICATION_JSON))
                .andExpect(status().isForbidden())
                .andExpect(content().contentType("text/html")); // when I mock, I need to comment this out to get test to work.  
}



// Controller 

@RequestMapping(value = "/{a}/{b}/{c}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) // I do have content type
@ResponseBody
public MyResponse getSomething(
            HttpServletRequest request, HttpServletResponse response,
            @PathVariable String a, @PathVariable String b,
            @PathVariable String c,
            @RequestParam(value = "some", required = false) String some)
            throws Exception {

            // some logic 

            //static method being called
            MyStaticClass.someMethod("sample", "sample2");

            try {
                MyResponse myPageResponse = new MyResponse(anotherStr, someStr); // it breaks here and throws that error msg. Doesn't reach return.
                return MyResponse;
            } catch (NullPointerException npe) {}
}

1 Ответ

0 голосов
/ 21 октября 2018

Это запрос на получение, у которого нет тела, поэтому в идеале указание заголовка типа контента с помощью contentType ("text / html") может быть неправильным подходом.Во-вторых, ваш заголовок типа содержимого в запросе должен совпадать со значением @consumes, в нем четко указано, что вы ожидаете отправить text / html, но нет @consumes для его поддержки.

...