問題タブ [mockmvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
13934 参照

java - Spring テスト統合テストで自動配線された HttpServletRequest

ログイン機能をカバーするためのテストをしようとしています。Springのバージョンは3.2.12です。次のように宣言されたセッション Bean があります。

これはサーバー上で実行すると完全に機能しますが、スプリングテストの手段で実行すると問題が発生します。これは私のテスト方法です:

デバッグ後、テスト スプリング コンテキストが開始されると、ServletTestExecutionListener.setUpRequestContextIfNecessary で MockHttpServletRequest のインスタンスが作成されることがわかりました。 MockHttpServletRequest request = new MockHttpServletRequest(mockServletContext); // このインスタンスを A と呼びましょう。そして、これはどこにでも注入されるインスタンスです。

一方、MockMvc.perform を呼び出すと、MockHttpServletRequest の別のインスタンス (インスタンス B と呼びましょう) が作成され、すべてのフィルター、サーブレットなどに渡されます。つまり、基本的に、要求のフィルターに設定した属性はできません。 MockHttpServletRequest の別のインスタンスがそこに挿入されるため、ClientSessionServiceImpl で読み取られます。

私はこれに多くの時間を費やしましたが、まだ解決策を見つけていません。

PS StackOverflowで検索しました。同様のタイトルの質問がありますが、HttpServletRequestをパラメーターとして渡したくなく、正当な理由がない限り、自動配線することを好むため、私とは異なる問題を説明していますそれ。

0 投票する
2 に答える
106 参照

spring - モックされたリポジトリが期待どおりにトリガーされない

Mockito と MockMvc を使用した Controller Unit テストがあります。

POST リクエストの後、POST されたオブジェクトは正しく解決されますが、私のリポジトリ モックはトリガーされません。

モックコードは次のとおりです。

したがって、これはオブジェクトの保存をシミュレートするだけです (ID が設定され、そこからルートが生成されます)。

残念ながら、リポジトリは常に null を返すため、新しく作成された Route を null から返そうとすると、後でコードが失敗します。

モックは正しく挿入され、文字列比較などで機能します。または、関数が呼び出されたことを確認するだけの場合、オブジェクトでトリガーすることはできません。

同じ問題が発生します

トリガーしません。

質問は次のとおりです。1.) モックがトリガーされないのはなぜですか? オブジェクトの値が等しいかどうかはチェックしないと思いますが、オブジェクトがシリアライズされ、デシリアライズされるため、オブジェクト識別子は同じではありません。

2.) 一般的なモックを取得するにはどうすればよいですか? たとえば、repository.save() が呼び出されるたびに、パラメータに関係なく、常に特定の方法で実行する必要があります。

私はしたいです

PS何らかの理由で残りのコードが必要な場合は、ここに送信された部分があり、オブジェクトは通知のjson表現です(jacksonを使用)

これがコントローラーヘッダーです。オブジェクトは完全に逆シリアル化され、値は1:1で同じです

助けてくれてありがとう。

0 投票する
2 に答える
3025 参照

spring-mvc - MockMVC テスト コントローラーをセッション スコープの Bean と統合する

コントローラーに注入されるSpringセッションスコープのBeanを使用するSpring Controllerメソッドを統合テストしようとしています。テストに合格するには、このコントローラ メソッドへのモック呼び出しを行う前に、セッション Bean にアクセスして値を設定できる必要があります。問題は、モック アプリケーション コンテキストからプルしたセッション Bean を使用する代わりに、呼び出しを行うと、新しいセッション Bean が作成されることです。コントローラーで同じ UserSession Bean を使用するにはどうすればよいですか?

ここに私のテストケースがあります

ここに、テストが必要なコントローラーメソッドがあります

UserSession オブジェクトが同じではないため、この行を渡しません if(userSession.isEmployee() && userSession.getAuthorizationLevel() >= 3){

これは、私のユーザー セッション Bean の宣言です。

controlle と Bean の両方が、私の applicationContext.xml でコンポーネント スキャンを使用して作成されます。

0 投票する
1 に答える
485 参照

spring - Spring MockMvc トリミング パラメーター

私は困惑している問題に遭遇しました。Spring と JUnit の最新バージョンを実行しています。私は、MockMvc と Spring の統合テスト クラスを試して、会社のニーズに合うかどうかを確認しました。URL にバージョン番号である @PathVariable が含まれているリクエストを送信しようとするまでは、うまく機能していました。

ポム;

コントローラーの例。junit.framework.Assert をインポートします。

テストクラス;

私の appContext.xml ファイルには、この行のみが含まれています (最初のビーンズ タグと終了タグを除く)。

サンプル コントローラーに送信されるリクエストを表示すると、デバッガーで /example/appVersion/1.0.0.0 と表示されますが、パス変数は常に "1.0.0" に設定されています。「1.0.0.0.0」を渡すと、期待される「1.0.0.0」にトリミングされるため、最後の.0が常に削除されているようです。

これを引き起こしている可能性のあるもの、または私が間違っていることについての洞察をいただければ幸いです。

ありがとうございました。

0 投票する
1 に答える
6023 参照

java - エラー java.lang.IllegalArgumentException: 無効なトークン文字 '/' がトークン "multipart/form-data" に含まれています

次のテストケースがあります。実行すると、「java.lang.IllegalArgumentException: Invalid token character '/' in token "multipart/form-data"」というエラーが表示されます。

完全なスタック トレース:

ファイルをアップロードするコントローラーで上記のテストケースを実行しているときに取得しました。

更新:次の行にエラーが表示されます:

0 投票する
0 に答える
401 参照

java - MockMvc ポスト リクエストを使用した Junit Spring ポートレット

Junitでmockmvcを使用してアクション応答でリダイレクトをテストする必要があります

コントローラー.java

ControllerTest.java

問題は、コントローラ メソッドが Junit からの post perform で呼び出されないことです。

送信のクリック時のブラウザの URL は次のようになりますaction/rparam=action=submit.wsp

0 投票する
2 に答える
1335 参照

java - Spring、JUNIT、MockMvc、および Hamcrest を使用したコントローラーのテスト

get メソッドでオブジェクトのリストを返し、ページにドロップダウンを設定するコントローラーをテストしようとしています。

MockMvc と Hamcrest を使用して JUnit テストを作成しようとしています。

オブジェクトのリストを比較して、失敗するかどうかをテストしたいと思います。

Test.java でオブジェクトの静的リストを作成し、model.attribute メソッドからオブジェクトのリストを取得しています。

テストするには: オブジェクトの両方のリストが等しく、他のオブジェクトが含まれていない場合。

私のオブジェクトは Option と呼ばれ、3 つのプロパティがあります。キー、値、および選択済み。リストにすべてのキーが存在するかどうかを確認する必要があります。

同じことを行うマッチャーを作成できません。リストを比較するマッチャーを作成しようとしています。

これまでのところ、次のことを行っています。

これは、モデル属性を次のように取得する方法です。

前もって感謝します。

0 投票する
3 に答える
9491 参照

java - Spring MockMvc を介して日付オブジェクトをリクエストパラメーターとして渡す方法

Spring の MockMvc テスト フレームワークを使用して REST エンドポイントをヒットする単体テストがあります。残りのエンドポイントでは、 @RequestParametersjava.util.Dateとして渡される 2 つのオブジェクトとともに、2 つの文字列パス変数を送信する必要があります。テストを実行すると、Date オブジェクトが存在しないか、文字列 JSON 表現から Date オブジェクトにシリアル化できないため、失敗します。記録として、 にリストされているエンドポイントに到達する前に実行が失敗するため、この問題はテスト対象のコードに起因するものではありません。テストから来ています。.perform()

これが私のテストです:

エンドポイントは次のようになります。

これは、MockMvc がスローする例外です。

org.springframework.web.bind.MissingServletRequestParameterException: 必須の日付パラメーター 'startDate' が存在しません

テスト アプリケーションのコンテキストは次のようになります。

これらの Date オブジェクトを上記の残りのエンドポイントに正しく渡すにはどうすればよいですか?