5

を使用するコントローラーを (Spring テスト (mvc) を通じて) テストしようとしています。servletRequest.getParts()

私がこれまで読んだのは、それMockMvcRequestBuilders.fileUpload().file()が解決策であるということだけです。しかし、私はそれを機能させることはできません。私は失敗する次のテストを書きました

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

私は春のコードを調べました.別のリストから要素を取得するときにfile(...)要素を追加する呼び出しList<MockMultipartFile>getParts()(Map<String, Part> parts)

他にやり方があるはず…

編集 1

コントローラーをテストするために使用しているコードは次のとおりです。

ResultActions result = mockMvc.perform(
            MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
4

2 に答える 2

5

現在javax.servlet.http.PartSpring MVC Test Frameworkでのテストはサポートされていません。

したがって、Spring Framework 5.0 のこの欠点に対処するために、2 つのチケットを導入しました。

暫定的に、自分自身をモックして、カスタム 経由でPart準備済みに登録できるはずです。MockHttpServletRequestRequestPostProcessor

よろしく、

Sam ( Spring TestContext フレームワークの作成者)

于 2016-05-05T11:47:31.677 に答える