2016-05-03 8 views
1

にリクエストパートを設定します。しかし、私はそれを動作させることはできません。私は春のコードを経ては、私がこれまで読んだすべては<code>MockMvcRequestBuilders.fileUpload().file()</code>が解決することである私は(春のテスト(MVC)を介して)テストする<code>servletRequest.getParts()</code></p> <p>を使用して、コントローラをしようとしている春のテストMVC

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 

を失敗し、次のテストを書いた、とgetParts()(Map<String, Part> parts)

行うための別の方法が存在しなければならない別のリストからその要素を取得するときにfile(...)への呼び出しはList<MockMultipartFile>の要素が追加されますそれ...

編集1

私は、コントローラをテストするために使用しているコードは:

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

どのようにこれをテストしていますか?コントローラメソッドを呼び出すだけで、実際にMockMvcを使用していますか?あなたが間違って使用している後者の場合、それは前者の場合、あなたはそれを困難にしています。 –

+0

私はMockMvcを使用しています。私が使用しているコードを追加しました –

+1

'MultipartFile'は' Part'ではないので動作しません。 MockMvcでは現時点では不可能なパーツとafaikしか追加できません。あなたの唯一の変更はおそらく、 'Part'を模擬してカスタムのRequestBuilderを作成して自分自身を追加することです。 –

答えて

2

Spring MVCのテストフレームワークjavax.servlet.http.Partをテストするためのサポートはありません。

その結果、私は春のフレームワーク5.0でこの欠点を解決するために2枚のチケットを導入しました:

は、あなたがPartを自分で模擬することができるはずですし、カスタムRequestPostProcessorを使用して準備済みMockHttpServletRequestに登録してください。

よろしく、

サム(春TestContextフレームワークの著者)

+0

私はそれを嘲笑することができません。 'RequestPartServletServerHttpRequest'では、これを実行します: ' this.headers = this.multipartRequest.getMultipartHeaders(this.partName); if(this.headers == null){ 新しいMissingServletRequestPartException(partName)をスローします。 } ' – Snekse

+0

Hmmm ... SPR-14252とSPR-14253が解決される前に、これを簡単に実行できないようです。これらの問題にあなたのコメントを追加し、あなたの経験を考慮に入れます。 –

+1

FYI:https://jira.spring.io/browse/SPR-14252に_さらなる分析_セクションを導入しました –

関連する問題

 関連する問題