Ich schreibe Tests, um zu überprüfen, dass ich eine generische Form Post zu unserer API machen kann.Testformular Beiträge über MockMVC
Ich habe auch einiges Debugging hinzugefügt, aber ich habe festgestellt, dass die Daten von einem tatsächlichen Formular gepostet wurden; (Postman/AngularJS oder w/e) unterscheidet sich von einem mockMVC Test tun wie:
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();
Die Config ist genau die gleiche wie die Konfiguration in der Produktion läuft, und so. Jedoch Wenn mein Abfangjäger den Inhalt in Echt Prüfprotokolle (nicht mockMVC) wird der Inhalt formatiert wie „someparam1 = somevalue & etc = Zugabe“
Wenn ich den mockMVC Inhalt drucken tatsächlich scheine ich keinen Inhalt zu haben, aber es gibt Params in der Anfrage, ich nehme an, dass sie wie GET-Parameter hinzugefügt werden.
Wer weiß, wie man das richtig testet? Ich bin auf dieses Problem gestoßen, da es so aussieht, als ob unsere Formular-Posts nicht von Spring geparst werden, obwohl wir den FormHttpMessageConverter zum Servlet-Kontext hinzugefügt haben.
Können Sie mehr Details liefern, wie die Konfiguration, reale Daten, die Sie auf den Server und einige Protokolle Detail schreiben, um es klar? Über den Schein, es scheint, dass Sie Recht haben, der Param des Scheintests ist die gleiche Art von Format von Post-Daten, die Sie zeigen. Überprüfen Sie auch, ob Sie etwas wie Federsicherheit denken. Möglicherweise müssen Sie die Federsicherheit vorspielen oder die Anmeldung durchführen, bevor Sie die nächsten Schritte ausführen. –
Wir verwenden so etwas nicht, was ich herausgefunden habe ist, dass mein Beispiel tatsächlich falsch ist. In diesem Fall sind someParam1 und someParam2 ein Abfrageparameter (In url). Ich möchte die Form params daher URLENDE verwenden. Dies scheint jedoch nur durch ein Modell oder eine Wertemappe zugänglich zu sein. Also werden wir eine Workaround benötigen (dies wurde komplett in Spring-Mvc migriert, war früher @FormParam, was nicht Frühling ist). –
Oh, auch die Daten gepostet, war wie in meinem Beispiel unter dem Mvc-Teil, es ist eine Inhalts-String concatinated mit & und = –