RestFixture をお勧めします。その名前にもかかわらず、非常にシンプルな HTTP クライアントです。任意の HTTP リクエストを作成して、返された応答を確認できます: ステータス コード、ヘッダー (正規表現を使用して、関心のあるヘッダーのみを確認します) および本文 ( XPath または JavaScript の期待値を使用して、関心のあるノードのみをチェックします)。Content-Type ヘッダーの値に基づいて XML または JSON を処理します。ほとんどすべての HTTP 動詞を処理します: GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE。ただし、PATCHを処理するとは思わないでください。
Fried Hoeben の HttpTest フィクスチャ、XmlHttpTest および JsonHttpTest を使い始めたところです (このスレッドの別の場所にある Fried の回答を参照してください)。RestFixture よりもわずかに多くの機能を備えているようです。たとえば、本文に埋め込まれた特定の値を除いて同一のリクエストを繰り返し送信できるテンプレートをサポートしています。テンプレートを 1 回指定してから、呼び出しごとにテンプレートに渡す値をリストするだけで、毎回リクエスト本文全体を繰り返し指定する必要がなくなります。
一方、Web サービスへの単純な呼び出しについては、RestFixture の方が使いやすいと思います。
RestFixture の概要
RestFixture は実質的に 3 種類のコマンドしかないため覚えやすいです。
1) セット: setHeader および setBody。HTTP 要求のヘッダーまたは本文を指定するため。
2) let: 変数に値を割り当てるため。
3) HTTP 動詞: HTTP 要求を送信します。
これが、私が RestFixture を気に入っている理由です。すべての HTTP 動詞の構文は同じです。
| verb | uri | ?responseStatusCode | ?responseHeaders | ?responseBody |
HTTP 動詞、リクエストの送信先の URI、予想されるレスポンス ステータス コード、チェックするレスポンス ヘッダー (テストしたくないヘッダーは除外します。正規表現を使用できます)、およびノードを指定します。応答本文で確認します。
すべての HTTP 動詞に同じ構文を使用すると、非常にクリーンなテストになると思います。
例
| Import |
| smartrics.rest.fitnesse.fixture |
|Table: Rest Fixture | http://localhost:9876 |
| setBody | <resource><name>a name</name><data>data</data></resource> |
| POST | /resources/ | 201 | | no-body |
| let | id | header | Location:/resources/(.+) | |
| Table: Rest Fixture | http://localhost:9876 |
| GET | /resources/%id% | 200 | Content-Type : application/xml | !- /resource/name[text()='a name']
/resource/data[text()='data'] -! |
このテストは、POST を介して新しいアイテムを生成し、新しいアイテムの ID を読み取って変数に割り当て、その ID 値を GET で使用して、新しいアイテムが存在し、正しいデータが含まれていることを確認します。
POST 要求は、応答に 201 ステータス コードがあり、本文がないことを想定しています。GET 要求は、応答にステータス コード 200 と、Content-Type ヘッダーが application/xml に設定されていることを期待しています。ボディには、「名前」に設定された名前ノードと「データ」に設定されたデータ ノードがあることが期待されます。
この例は RESTful Web サービス用ですが、RestFixture は SOAP でも同様に機能します。POST に指定する本文は、大きくなります。
インストールと使用
RestFixture はhttp://github.com/smartrics/RestFixtureにあります。豊富な例を含むドキュメントへのリンクが含まれています。
Maven を使用して RestFixture をビルドおよびインストールする手順は次のとおりです。 RestFixture を使用してテストを作成するワークフロー
Maven の経験がなくても .NET のバックグラウンドを持っていたので、インストールする最も簡単な方法は、既存の FitNesse インストールに追加することであることがわかりました。
1) Maven Central ( http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22smartrics-RestFixture%22 ) から圧縮されたバイナリをダウンロードします。
2) zip ファイルを FitrNesseRoot ディレクトリの横のディレクトリに解凍します (ディレクトリは FitNesseRoot の下にあってはなりません)。例として、ディレクトリをRestFixtureLibと呼びましょう(実際には、ディレクトリには好きな名前を付けることができます)。
3)すでに FitNesse がインストールされているため、 RestFixtureLibディレクトリで FitNesse-{version}.jar ファイルを削除します。
4) RestFixture テストを含むテスト ページで、RestFixtureLib ディレクトリをクラス パスに追加します。
!path RestFixtureLib/*.jar
(または、RestFixture を解凍したディレクトリへのパスは何でも)
複数のページで RestFixture を使用する場合は、このクラス パス定義をスイート ページまたはルート ページに含めることができます。
5) RestFixture は、FIT または SLIM テスト システムで使用できます。SLIM を使用している場合は、テスト ページに次の定義を含めます。
!define TEST_SYSTEM {slim}
6) テスト ページの上部にある RestFixture 名前空間をインポートすると、テストの手間が大幅に軽減されます。
| Import |
| smartrics.rest.fitnesse.fixture |
次に、次のようにテストを定義できます
|Table: Rest Fixture | ... |
| ... |