Web サービスコールアウトのテスト
Web サービスコールアウトをテストするための擬似応答の指定
WSDL から Apex クラスを作成した場合、自動生成されたクラスのメソッドが WebServiceCallout.invoke をコールし、そこから外部サービスへのコールアウトが実行されます。これらのメソッドをテストする場合、WebServiceCallout.invoke がコールされたときには常に擬似応答を生成するように Apex ランタイムに指示できます。そのためには、WebServiceMock インターフェースを実装し、送信する Apex ランタイムの擬似応答を指定します。手順の詳細は次のとおりです。
最初に、WebServiceMock インターフェースを実装し、doInvoke メソッドに擬似応答を指定します。
擬似応答の値を指定したら、テストメソッドで Test.setMock をコールし、この擬似応答を送信するように Apex ランタイムに指示できます。次のように、第 1 引数では WebServiceMock.class を渡し、第 2 引数では WebServiceMock のインターフェース実装の新しいインスタンスを渡します。
これ以降、Web サービスコールアウトをテストコンテキストで呼び出すと、コールアウトは行われません。doInvoke メソッド実装で指定した擬似応答を受信します。
この例では、Web サービスコールアウトをテストする方法を示します。最初に挙げているのが、WebServiceMock インターフェースの実装です。この例では doInvoke メソッドを実装し、そのメソッドから指定した応答が返されます。この場合、自動生成されたクラスのレスポンス要素が作成されて値が割り当てられます。次に、応答の Map パラメータにこの擬似応答が入力されます。次の例は、「生成される WSDL2Apex コード」 に記されている WSDL に基づいています。このクラスを保存する前に、この WSDL をインポートし、docSample というクラスを生成しておきます。
次のメソッドでは、Web サービスコールアウトを行います。
次のテストクラスには、擬似コールアウトモードを設定するテストメソッドが含まれます。これは前述のクラスに含まれる callEchoString メソッドをコールし、擬似応答が受信されたことを確認します。