組み込みの Jetty で実行される Scalatra Web サービスがあります。次のような統合テストを書きたいと思います。
- サービスを開始します (アプリケーションのメイン メソッドを使用)
- テストを実行する (HTTP インターフェースを操作する)
- サービスを停止します。
これはすべて、SBT コマンドによってトリガーされる必要があります。
これについてどうすればよいですか?
組み込みの Jetty で実行される Scalatra Web サービスがあります。次のような統合テストを書きたいと思います。
これはすべて、SBT コマンドによってトリガーされる必要があります。
これについてどうすればよいですか?
このような統合テストは、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 サーバーをロードできます。一緒にテストしたことはありませんが、テスト中にサーバー側を変更する必要がなければうまくいく可能性があります。