問題タブ [karate]
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.
java - JAVA を使用してコールバックを使用するときに REST エンドポイントをテストする方法は?
コールバック パラメータを使用している REST エンドポイントに対するテストを作成したいと考えています。ややこしいかもしれないので、以下に説明します。
/publish
最初の呼び出しは、ペイロードを使用した POSTです。{"callbackURL":"http://localhost:609/test"}
サーバーは 200 といくつかの json で応答します
サーバーは、
http://localhost:609/test/status
(提供されたコールバック URL に基づいて) への非同期 POST を実行し、いくつかの json ペイロードを使用します。
TestNG と Rest-assured (必須ではありません) を使用してテストを作成しました。私の問題は、最初の返信とコールバック URL で受信したメッセージの両方を検証する方法です。私が最初に考えた (おそらくナイーブな) アプローチは、でリッスンする HTTP サーバーを実装するhttp://localhost:609/test/status
ことです。何かが来ると、同期されたオブジェクトに書き込み、そこからテストが読み取られて検証されます。ただし、少しトリッキー (テスト ローカル サーバーは内部クラスを使用するなど) で壊れやすいように思えます。誰もがより良いアプローチを考えることができますか?
cucumber - Karate API テスト - '?' のエスケープ 機能ファイルの URL
Karate API フレームワークのpathキーワードを使用して、文字列を連結して URL を形成しています。ただし、「?」を渡すことができません。これが私がやっていることです:
テストを実行すると、「?」が表示されます。%3F として渡されます。\ を使用してエスケープしようとしましたが、他の答えも試しましたが、成功しませんでした。URL エンコーディングを使用する必要がありますか? ポインタやヘルプをいただければ幸いです。ありがとう
karate - 702 ミリ秒後に呼び出しが失敗しました
最初のスクリプトを実行すると、次のエラーが表示されます。
com.intuit.karate.exception.KarateException: URL: https://qa.myorg.intVersionの http 呼び出しが 702 ミリ秒後に失敗しました。
これが私の機能ファイルです。
これが私のJavaファイルです:
デバッグモードで長時間手動で待機しました。それでも、以下のエラーが表示され、ターゲット フォルダーに HTML レポートが読み込まれません。(対象フォルダの下に Karate.log のみが表示されます。)
11:36:23.751 [main] エラー com.intuit.karate - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 有効なものが見つかりません要求されたターゲットへの証明書パス、URL の 271489 ミリ秒後に http 呼び出しが失敗しました: https://qa.myorg.int/Version
どうすれば解決できますか?