8

Spec2と Scala を使用して、Java を使用して構築された REST サービスをテストしたいと考えています。私はSprayを見ましたが、SprayTestを使用してテストするには、Sprayを使用してアプリケーションを構築する必要があるようです. このスレッドも見つけましたが、実際に探しているものではありません。

他のアイデアはありますか?

4

2 に答える 2

4

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 プロジェクトも進行中です。ただし、それがどれほど安定しているかはまだわかりません。

于 2012-05-10T12:49:35.993 に答える
1

私の最後のプロジェクトでは、 REST サービスのテストにAsyncHttpClientJersey Clientを使用しましたが、どちらもお勧めできます。非同期操作の場合、前者の方が優れています(ジャージークライアントが非同期操作をまったくサポートしているかどうかはわかりません)。

これらは Java で書かれており、(私の知る限り) Scala-API はありません。

于 2012-05-10T12:36:02.517 に答える