MockMVC usando JSONPath incapaz de leer

votos
0

Este caso de prueba es fijo y no puede modificarla. En el controlador estoy regresando noticias objeto que está apareciendo en el componente de Modelo de la salida. Pero el JSONPath es incapaz de encontrarlo.

Si este caso de prueba debe ser aprobada, donde debería aparecer mi producción o lo que debería volver desde el controlador.

@SpringBootTest
@RunWith(SpringRunner.class)
public class NewsControllerTest {
    private MockMvc mockMvc;

    @Autowired
    WebApplicationContext context;

    @InjectMocks
    private NewsController newsController;

    @Before
    public void setup() {
        mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
    }

@Test
    public void retrievetest_ok() throws Exception {
        try {
         mockMvc.perform(get(/api/news/topstories )).andDo(print())
             .andExpect(status().isOk())                    
             .andExpect(MockMvcResultMatchers.jsonPath($.title).exists())
             .andExpect(MockMvcResultMatchers.jsonPath($.section).exists());
        }catch(Exception e) {
            e.printStackTrace();
        }


    }
}

Sin embargo, no soy capaz de recuperar la sección de datos y título. Cómo pasar este caso de prueba. Cuando los datos de salida debe fijarse para que sea capaz de verlo en jsonpath.

Este es mi maqueta cuando lo imprimo a la consola

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /api/news/topstories
       Parameters = {}
          Headers = {}
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = com.example.project.NewsController
           Method = public java.util.Map<java.lang.String, java.lang.String> com.example.project.NewsController.getNews()

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = api/news/topstories
             View = null
        Attribute = section
            value = U.S.
        Attribute = title
            value = 4 Takeaways from Tuesday’s Primaries

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {Content-Language=[en]}
     Content type = null
             Body = 
    Forwarded URL = api/news/topstories
   Redirected URL = null
          Cookies = []

Necesito extraer

Publicado el 02/09/2018 a las 05:10
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Desde el javadoc

estática JsonPathResultMatchers jsonPath (Expresión de cadena, objeto ... args)

El acceso a las afirmaciones del cuerpo de respuesta utilizando una expresión JsonPath para inspeccionar un subconjunto específico del cuerpo.

Y desde su salida

 MockHttpServletResponse:
            Status = 200
     Error message = null
           Headers = {Content-Language=[en]}
      Content type = null
              Body = 
     Forwarded URL = api/news/topstories    Redirected URL = null
           Cookies = []

Parece que tiene un cuerpo de respuesta vacía.

Por favor, modifique su controlador para producir el JSON adecuada en el cuerpo de la respuesta.

Respondida el 02/09/2018 a las 05:58
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more