5

組み込みの Jetty で実行される Scalatra Web サービスがあります。次のような統合テストを書きたいと思います。

  • サービスを開始します (アプリケーションのメイン メソッドを使用)
  • テストを実行する (HTTP インターフェースを操作する)
  • サービスを停止します。

これはすべて、SBT コマンドによってトリガーされる必要があります。

これについてどうすればよいですか?

4

2 に答える 2

2

このような統合テストは、Specs のような BDD テスト フレームワークの上に書くことができます。フィルタリングされていないプロジェクトには、Scalatra などの他の Web フレームワークで機能するはずの多くの例があります。

たとえば、ServerSpecを見てください。

"A Server" should {
  "respond to requests" in {
    http(host as_str) must_== "test"
  }
  ....
}

で指定されたテストサーバーを起動しsetup、仕様で Dispatch を使用してヒットしています。unfiltered.spec.jetty.Served重要な部分はtraitに実装されており、サービスの開始と停止という、説明したことを行います。Specs2 バージョンもあります: unfiltered.specs2.jetty.Served.

使用できるもう 1 つのトリックはsbt-revolverです。これは、Web 開発を行っているときにお気に入りのプラグインであり、特に JRebel と組み合わせて使用​​します。このプラグインは、バックグラウンドで Web サーバーをロードできます。一緒にテストしたことはありませんが、テスト中にサーバー側を変更する必要がなければうまくいく可能性があります。

于 2013-08-18T22:07:45.780 に答える