MockMVC utilisant JSONPath incapable de lire

voix
0

Ce cas de test est fixe et je ne peux pas le modifier. Dans le contrôleur je retourne Nouvelles objet qui apparaît dans la composante du modèle de la sortie. Mais le JSONPath est incapable de le trouver.

Si ce cas de test doit être passé, où doit apparaître ou ma sortie que dois-je revenir du contrôleur.

@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();
        }


    }
}

Mais, je suis incapable de récupérer les données « section » et « titre ». Comment passer ce testcase. Où les données de sortie être réglé pour être en mesure de le voir dans jsonpath.

Ceci est mon moquerai quand je l'imprime à la console

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 = []

Je dois extraire

Créé 02/09/2018 à 05:10
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

De la javadoc

statique JsonPathResultMatchers jsonPath (expression String, Object ... args)

L'accès aux assertions de corps de réponse à l'aide d'une expression de JsonPath pour inspecter un sous-ensemble spécifique du corps.

Et à partir de votre sortie

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

Il semble que vous avez un corps de réponse vide.

S'il vous plaît modifier votre contrôleur pour produire le JSON approprié dans le corps de la réponse.

Créé 02/09/2018 à 05:58
source utilisateur

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