Spec2と Scala を使用して、Java を使用して構築された REST サービスをテストしたいと考えています。私はSprayを見ましたが、SprayTestを使用してテストするには、Sprayを使用してアプリケーションを構築する必要があるようです. このスレッドも見つけましたが、実際に探しているものではありません。
他のアイデアはありますか?
Specs2 と Dispatch ライブラリ ( https://dispatchhttp.org/Dispatch.html ) を使用して、すべての REST API を正常にテストしています。Dispatch を理解するには少し時間がかかりますが、Dispatch がさまざまなオペレーターと共にすべてを構成する方法を理解すれば、数行のコードで単純な REST サービスをテストできます。
最近のプロジェクトからのいくつかのテストケースを次に示します。
def issueErrorStatus = {
val requestBody = "msisdn=447777666666&message=Some test message"
val req = url("http://localhost:%d/otac/issue".format(port)) <<
(requestBody, "application/x-www-form-urlencoded")
val response = Http.when(_ == 400)(req <:< (touchPointHeaders) as_str)
response must_== """{"error":"Message must contain an {OTAC} place holder"}"""
}
def checkOtac = {
val req = url("http://localhost:%d/otac/check".format(port)) <<?
Vector(("msisdn" -> "447777123456"))
val response = Http(req <:< (touchPointHeaders) as_str)
response must_== """{"status":"Present","reissueAllowed":true}"""
}
最初のテストはポスト リクエストを作成し、2 番目のテストは取得リクエストを作成します。ドキュメントをより簡単にアサートできるように、lift-json パーサーを介して応答 JSON 文字列を解析する、より複雑なテストもいくつかあります。上記のテストは、いくつかの単純なエラー/ステータス ケースをチェックしているだけです。
単純化された API を持ち、非同期接続で動作する、dispatch-reboot プロジェクトも進行中です。ただし、それがどれほど安定しているかはまだわかりません。
私の最後のプロジェクトでは、 REST サービスのテストにAsyncHttpClientとJersey Clientを使用しましたが、どちらもお勧めできます。非同期操作の場合、前者の方が優れています(ジャージークライアントが非同期操作をまったくサポートしているかどうかはわかりません)。
これらは Java で書かれており、(私の知る限り) Scala-API はありません。