問題タブ [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 投票する
3 に答える
7632 参照

java - Spring MockMvc の結果に Cookie が含まれないのはなぜですか?

REST API でログインとセキュリティの単体テストを試みているため、実際の要求シーケンスを可能な限り似せてモックしようとしています。

私の最初のリクエストは次のとおりです。

( pastebinの完全なクラスを参照してください)。

後で受け取った CSRF トークンでログインできるように、ここで Cookie を取得しようとしましたが、cookies配列が空です!

ただし、アプリケーションを実行して呼び出すと

Set-Cookie ヘッダーを取得し、後でその Cookie (および CSRF トークン) を使用して認証できます。

問題は、MockMvc に Cookie を返してもらうにはどうすればよいかということです。

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

junit - RestAssuredMockMvc - Autowire リポジトリが null です

RestAssuredMockMvc を使用してレスト コントローラーをテストしています。これは私のコードです


テスト ケースを実行すると、このエラーが発生します (注: clientRepository は NULLであり、NPE をスローしますが、最後の行は、クライアントが正常に作成されたことを示しています。


誰でも私を案内してもらえますか?私は何を間違っていますか?リポジトリが null になっているのはなぜですか?
Curl コマンドとテストを使用すると、エンドポイントは機能しますが、単体テスト用の junit を作成できません。助けてください

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

spring-security - Spring Boot と MockMVC の統合テスト

MockMvc を使用して Spring Boot アプリケーションをテストする際に問題が発生しています。

次のテストクラスがあります。

これにより、401 ではなく HTTP 200 が返されます。コンポーネントのスキャンと自動構成が有効になっており、Spring セキュリティが SecuityConfiguration クラスで次のように構成されています。

RestTemplate を使用してアクセスするhttp://localhost:8080/accounts/1と、期待される動作 (HTTP 401) が得られます。

メソッドを使用して手動でフィルターを自動配線し、追加することを示唆する他の例 (テスト用の Spring Boot セットアップ セキュリティなど) を見てきました。ただし、これは実際には失敗します ( )。FilterChainProxyWebApplicationContext.addFilters(filterChainProxy)org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.web.FilterChainProxy] found

2 つの質問があります。

  1. 注入された WebApplicationContext が SpringSecurity フィルターを自動的に使用しないのはなぜですか? FilterChainProxy を取得して手動で追加できたとしても、EmbeddedWebApplicationContext の JavaDoc には次のように記載されています。

コンテキストで定義された {@link Servlet} または {@link Filter} Bean は、組み込みサーブレット コンテナに自動的に登録されます。

その結果、セキュリティ フィルター チェーンを手動で追加する必要はないと思います。なぜなら、Spring Boot の自動構成マジックにより、これが「うまく機能する」と (間違って?) 期待しているからです。

  1. アプリケーションコンテキストに FilterChainProxy がないのはなぜですか? 繰り返しますが、AutoConfiguration に対する私の期待は間違っている可能性がありますが、これはコンテキスト構成の一部として構成されると思いました。

アドバイスをよろしくお願いします。


編集

  • FilterChainProxy が注入されない理由は、構成が次のように設定されているためです。

    public void configure(WebSecurity web) { web.debug(true); }

これは実際にはorg.springframework.security.web.debug.DebugFilter代わりに a を構成します。このデバッグ設定に関係なく、フィルターを取得する方法は次のとおりです。

これを MockMvcBuilder に次のように追加すると:

その後、期待どおりに動作します。

しかし、MockMVC がフィルターを無視する理由がわかりません。これは、テストの結果に影響を与える可能性のあるフィルターで何かが発生する可能性があるため、要求をテストするために重要であると思われるからです。さらに、適切にテストするには、サーブレット コンテキストですべてのフィルターを検索し、それらの優先度/URL マッピングを確立して適切に追加する必要があることを意味します。これはエラーが発生しやすく、不要なようです。

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

spring - Spock の MockMvc が機能しない

私は単純なコントローラーのセットアップを持っています:

この単純なコントローラーでは、MockMVC を使用して Spock でテストを作成しようとしています。

私が持っているJARは次のとおりです。

Spring-test:4.0.5 Javax-servlet-api:3.0.1 spock-spring:0.7-groovy-2.0

テストを実行した後に発生するエラーは次のとおりです。

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

spring-mvc - 正しいエラーメッセージが返されたことをmovckmvcテスト

次のテスト (ユーザーが同意した条件が最新バージョンではないため、検証が失敗することをテストする) は正常に機能しますが、返されるエラー メッセージをテストしたいと思います。この理由は、後続のテスト (受け入れられた条件のバージョンが null の場合に検証が失敗することを確認する) が同じテスト基準を持つためです。

その結果、返されるエラー メッセージもテストしたいと思います。私は午前中ずっと何かを探していましたが、エラーメッセージの値にアクセス/テストすることさえ可能かどうか疑問に思うものを見つけることができませんか? モデル内にあることがわかりますが、アクセス/テストに苦労しています。

どんな助けでも大歓迎です!

前もって感謝します

S

テスト

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

java - NoInitialContextException - InitialContext.lookup から取得したデータソース接続を使用して Rest Web サービスにアクセスする MockMvc

他のアプリケーションから呼び出すと完全に動作する残りの Web サービスがありますが、Junit テスターから呼び出すと失敗します。私は過去数時間で多くのことを読みましたが、正しく理解している場合、件名のエラーは2つの考えられる理由で発生しています.1-MockMvcを使用するとJNDIが無視され、2-クラスパスに必要なjarがありません. jar については、他のアプリケーションから呼び出されたときに正しく実行されるため、原因ではないと思います。jndi については、Web サービスが他のアプリケーションから呼び出されたときにコンテナーがデータソースを提供できるのに、モック テスターから呼び出されたときに失敗する理由がよくわかりません。それについて私が見つけた最も近い質問は、モックされた JNDI データソースを Spring でテストする方法です。. このスレッドでは、最後のコメントで良い解決策が得られたようですが、主に「jee:jndi-lookup」を使用した jndi ファイル定義がないため、実装できませんでした。簡単に言うと、残りの Web サービスはメソッドを公開するコントローラーであり、このメソッド内には接続を取得する場所があります。コントローラーを超えるものはすべて、変更することはできません。MockMvc を使用してこの残りの Web サービスをテストするにはどうすればよいですか? レスト サービスがモック テスターから呼び出されたときにロックアップが機能しないのはなぜですか? 「ic.lookup("java:comp/env/jdbc/MHE")」を実行するために、test-mvc-dispatcher-servlet.xml に構成を追加する方法はありますか?

//接続はこのメソッドから提供され、変更できません

// Web サービスを休止

//MockMvc

//test-mvc-dispatcher-servlet.xml

//エラーログ