ich zu testen, bin versucht (durch Feder Test (MVC)) eine Steuerung, die verwendet servletRequest.getParts()
Rahmen Anfrage Teile im Frühjahr Test mvc
Alles, was ich bisher gelesen habe, ist, dass MockMvcRequestBuilders.fileUpload().file()
die Lösung. Aber ich kann es nicht funktionieren lassen. Ich schrieb den folgenden Test, der
MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.fileUpload("/foo")
.file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 }));
MockHttpServletRequest rq = builder.buildRequest(null);
Assert.assertEquals(1, rq.getParts().size()); // result 0
versagt ich durch Feder Code ging, und der Anruf an file(...)
fügt ein Element in List<MockMultipartFile>
wenn getParts()
ihre Elemente aus einer anderen Liste bekommt (Map<String, Part> parts)
Es muss einen anderen Weg zu tun es ...
bearbeiten 1
Der Code, den ich den Controller zu testen, bin mit ist:
ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
Wie testen Sie das? Rufen Sie einfach die Controller-Methode auf oder verwenden Sie MockMvc. Wenn es Letzteres ist, benutzt du es falsch, wenn es das erstere ist, machst du es zu schwierig. –
Ich benutze MockMvc. Ich habe den Code, den ich verwende, hinzugefügt –
Ein 'MultipartFile' ist kein' Part', also wird das nicht funktionieren. Sie können nur Teile und afaik hinzufügen, die mit MockMvc derzeit nicht möglich sind. Ihre einzige Änderung ist wahrscheinlich, das 'Part' zu verspotten und es selbst hinzuzufügen, indem Sie einen benutzerdefinierten RequestBuilder erstellen. –