Sto scrivendo dei test per verificare che posso inviare un modulo generico alla nostra API.Test dei messaggi di modulo tramite MockMVC
Ho anche aggiunto un po 'di debug, ma ho notato che i dati inviati da un modulo effettivo; (Postman/AngularJS o w/e) si differenzia dal fare un test mockMVC come:
MvcResult response = mockMvc
.perform(post("/some/super/secret/url") //
.param("someparam1", "somevalue") //
.param("someparam2", "somevalue") //
.contentType(MediaType.APPLICATION_FORM_URLENCODED) //
.accept(MediaType.APPLICATION_JSON)) //
.andExpect(status().isOk()) //
.andReturn();
La configurazione è esattamente la stessa della configurazione in esecuzione in produzione, e così via. Tuttavia quando la mia intercettore registra il contenuto, nella prova reale (non mockMVC) il contenuto è formattato come "someparam1 = someValue & ecc = bis"
Quando stampo il contenuto mockMVC Io in realtà sembrano non avere alcun contenuto, ma ci sono Param nella richiesta, presumo siano aggiunti come parametri GET.
Qualcuno sa come testare correttamente questo? Mi sono imbattuto in questo problema poiché sembra che i nostri post non sembrino essere analizzati da Spring anche se abbiamo il FormHttpMessageConverter aggiunto al contesto servlet.
Puoi fornire maggiori dettagli, come la configurazione, dati reali si registra al server e qualche dettaglio di log per renderlo più chiaro? Per quanto riguarda la simulazione, sembra che tu stia facendo bene, il parametro del test di simulazione è lo stesso tipo di formato dei dati dei post che mostri. Inoltre, controlla se hai qualche pensiero come sicurezza di primavera. Potrebbe essere necessario prendere in giro la sicurezza di primavera o eseguire il login prima di fare i passi successivi. –
Non usiamo nulla del genere, quello che ho scoperto è che il mio esempio è in realtà sbagliato. in questo caso someParam1 e someParam2 saranno una query param, (In url). Voglio usare i parametri del modulo quindi URLENCODED. Questo tuttavia sembra essere accessibile solo attraverso un modello o una mappa di valori. Quindi avremo bisogno di una soluzione alternativa (questo è stato migrato per essere completamente mvc di primavera, usato per essere @FormParam che non è primavera). –
Oh anche i dati inviati, erano come nel mio esempio sotto la parte Mvc, sta pubblicando una stringa di contenuti concatenata con & e = –