特定のリクエストパラメータに対応するモックデータを返したり、異なるプロパティ間の論理的な関係を維持する必要がある場合があります。IDが1001のユーザー情報をリクエストした場合、レスポンスにはこのIDが含まれ、その値は1001であるべきです。
または、モックデータに開始時刻と終了時刻のような関連するプロパティが含まれている場合、終了時刻は開始時刻よりも後であるべきです。
これらの論理的な関係は、Mockスクリプトを使用して実装できます。仕組み#
Mockスクリプトの基本的な実装原理は以下の通りです:1.
Smart mockやその他のモック機能を使用して、初期のモックレスポンスを生成します。このレスポンスは、必要なすべての制約を満たしていない可能性があります。
2.
Mockスクリプトを使用して、$.mockResponse
オブジェクトや$.mockRequest
オブジェクトにアクセスします。
3.
mockResponseとmockRequestからデータを取得し、JavaScriptを使用して目的のロジックを実装します。
4.
$.mockResponse.setBody
メソッドを使用して、変更したデータでmockResponseを書き換えます。
5.
モックエンジンが最終的なmockResponseを返します。
MockスクリプトはスマートMockでのみ機能し、Mockの期待値やレスポ ンス例には適用されません。
Mockスクリプトの使用#
1
Mockタブに切り替え、下部にある
Mock Scriptセクションを見つける。
スクリプトリファレンス#
Mockスクリプトの例#
1.
最初に自動生成されたモックレスポンスを取得します。
3.
最後に、これらの変更をモックレスポンスに反映します。
$.mockRequestオブジェクト#
$.mockRequest
オブジェクトは、Mockスクリプト内で受信したリクエストを表します。Postmanのpm.request
オブジェクトに似ていますが、いくつかの追加機能があります。1.
getParam(key: string)メソッド: リクエストからパラメータを取得します。パラメータの場所(クエリ文字列、ボディなど)に関係なく取得できます。
2.
クッキーへのアクセス: リクエストからクッキーの値を取得できます。
使用例#
$.mockResponseオブジェ クト#
$.mockResponse
オブジェクトは、返されるレスポンスを表します。Postmanのpm.response
オブジェクトに似ていますが、モックレスポンスをより細かく制御するための追加メソッドがあります。1.
setBody(body: any)メソッド: レスポンスボディを設定します。
2.
setCode(code: number)メソッド: レスポンスのHTTPステータスコードを設定します。
3.
setDelay(duration: number)メソッド: モックレスポンスに遅延を追加し、ネットワークの遅延をシミュレートします。
使用例#
FAQ#
Q1: MockスクリプトでApidogの変数を使用するにはどうすればいいですか?
A: Mockスクリプトでは変数を使用できません。これは、変数がApidogクライアントの機能であるためです。モックエンジンはクライアントの一部ではないため、クライアント内の変数を参照できません。Q2: Mockスクリプトでログステートメントを使用してコンソールに出力するにはどうすればいいですか?
A: Mockスクリプトではログ機能は提供されていません。コンソールはApidogクライアントの機能であるため、モックエンジンはクライアントにログを出力できません。Q3: Mockスクリプトでpmオブジェクトを使用できないのはなぜですか?
A: Mockスクリプトはモックサーバー上で実行されますが、前処理/後処理スクリプトはリクエストを送信するApidogクライアント上で実行されます。これらは完全に異なる環境であるため、スクリプトの構文を共有することはできません。Q4: Mock期待値とMockスクリプトが同時に使用される場合、Mockスクリプトは有効になりますか?A: Mock期待値が一致した場合、Mockスクリプトは有効になりません。MockスクリプトはスマートMockでのみ機能し、Mock期待値やレスポンス例には適用されません。