問題タブ [pact]
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.
pact - Provider での PACT Consumer Driven setUP テスト データ
コンシューマーがプロバイダー データベース内に存在しない ID またはテキストを設定した場合、プロバイダー テストで以下の手順を実行するテストを実行しています。
- 最初にセットアップする必要があるものについての情報を含む PACT ファイルを受け取ります
- 次に、これらの利用できないデータを DB に挿入し始める関数を作成します。
- 次に、実際の応答を提供する への API 呼び出しを行います。
ここで、実際の API 呼び出しの前に必要な前提条件または事前設定があることをプロバイダーに知らせるためにコンシューマーが使用するフィールドを知りたいと思います。
setUp : InsertIntoDatabase があるサンプルを見ましたが、消費者によって提供された入力を見つける方法については述べていません。
pact - pact コントラクトに加えて、または pact コントラクトから json スキーマを生成する
私のクライアント コードでは、json スキーマを使用して json 応答を検証します ( ajvを使用)。契約テストのためにプロバイダーに対して実行する協定を生成するために、 pact-jsを使用することを計画しています。
クライアント コードがランタイム検証中に使用し、コントラクト テストが協定検証中に使用するスキーマについて、信頼できる唯一の情報源が必要です。pactファイルからjson(またはswagger)スキーマを生成する方法はありますか、または代わりに、個々のhttp応答のランタイム検証にpactファイル自体を使用するライブラリがあります(契約テストでの契約検証に使用されるだけではありません) ?
これは鶏が先か卵が先かという問題だと思います。なぜなら、最初にテスト実行の一部としてクライアント コードを実行して、協定 (そして json スキーマ) を生成する必要があるからです。そのためのワークフロー。
また、コントラクト テストによってランタイム検証の必要性が軽減されることも認識していますが、コントラクト テストはまだ、現実世界のすべてのシナリオを把握できるほど包括的ではありません。
java - ジャージーのエラー処理との協定
この素晴らしいコントローラー ポイントを作成しました。
このコードでは、Lamda を使用してエラー フローを処理します。
このために、いくつかの Pact テストを作成しました。呼び出すサービスによってスローされるエラーをモックする場合を除いて、すべての Pact が機能します。
pact テスト クラスの例:
今、私は Pact からいくつかの磨耗エラーを受け取ります。問題は Pact ではなく、girlzy が Pact でどのように機能するかだと思います。次のエラーが表示されるため:
失敗:
0) 短い名前で組織を取得すると、値が「application/json」のヘッダー「Content-Type」を含む応答が返されますヘッダー「Content-Type」には値「application/json」が必要ですが、「text/html;charset=ISO」でした-8859-1'
1) 短い名前で組織を取得すると、本文の比較が一致する応答が返されます -> 応答タイプが 'application/json' であると予想されていましたが、実際のタイプは 'text/html' でした
(コメントアウトされたプロパティ)を設定するとRESPONSE_SET_STATUS_OVER_SEND_ERROR
次に、協定は次のように失敗します。
失敗:
grizly は、エラー処理用に作成した Lamda が気に入らないような気がします。しかし、サーバーコンテナーのためにプロバイダーを機能させるためだけにコードを変更したくありません。私がコードをデバッグしようとしてきたアイデアは、コンテナに引き渡されるまで正しく流れます。そして、Jersy注釈を完全に無視しているようです