1

SpringMVCを使用してRESTfulエンドポイントを作成しています。私はspring-test-mvcを使用して、ユニット/統合テストレベルでそれらをテストしています。私は今、DELETEを使用してエンドポイントを実装するこのチームの最初の試みに出くわしています。これは、コンテナをDELETEを許可するように設定する必要があることを意味します(PUTはすぐ後に来るでしょう)。私の研究は私をここに連れて行った:

http://www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html

私は技術的にはJBossを使用していますが、Tomcatの書き込みは問題なく機能すると感じています。とにかく、私の問題はコンテナレベルではありません。

最も基本的な404を検証するための単体テストを作成しようとしています。たとえば、/ users/{id}を呼び出しているユーザーを削除しようとしているとします。私のテストは無効なIDに合格し、404が返されることを期待しています。405になります。これは、DELETEがサポートされていない場合に意味があります。上記のリンクの指示に従って、web.xmlにいくつかのエントリを追加する必要があります。私はメインとテストでそうしました。両方とも私に405を与えました。

これらの新しいhttpメソッドタイプをweb.xmlまたは他の場所から取得するようにspring-test-mvcを設定するにはどうすればよいですか?私の研究では、DELETEが最初にサポートされていないこと以外は何も思いつきませんでした。

ありがとうダスティン

4

1 に答える 1

2

Spring-test-mvcはDELETE(およびPUT)をサポートしています。私はこれをDELETEベースのメソッドで使用しました。アプリケーション内で機能するには、DELETE httpメソッドにHiddenHttpMethodFilterフィルターを追加する必要があるのは事実ですが、spring-test-mvcはサポートしています。web.xmlフィルタを見ないでください、それはDispatcherServlet下から機能します、これは私のために機能するサンプルの1つです:

    mockMvc.perform(delete("/members/1").contentType(MediaType.APPLICATION_JSON))
        .andExpect(status().isOk());

私が感じているエラーは、content-typeまたはaccept headersに関連している可能性があります。つまり、405が返されるのを確認した場合、ログレベルを変更してデバッグまたはトレースし、他に何が表示されるかを確認できる場合があります。

于 2012-10-11T01:02:03.923 に答える