私の部署の複数のグループが、Spray を使用して REST ベースの Web サービスを開発し始めましたが、すべて同様の問題に直面しており、これまでのところ、優れた解決策はありませんでした。
次のものがあったとします。
FooService extends Actor { ??? }
そして他の場所:
path("SomePath") {
id =>
get {
requestContext =>
// I apologize for the janky Props usage here, just an example
val fooService = actorRefFactory.actorOf(Props(new FooService(requestContext)))
queryService ! SomeMessage(id)
}
}
言い換えれば、すべてのエンドポイントには対応するアクターがあり、ルート内でそのタイプのアクターがリクエストコンテキストでスピンアップされ、メッセージが渡され、そのアクターが HttpResponse を処理して停止します。
私は常に十分に単純なルート ツリーを持っていたので、アクタ自体だけを単体テストし、ルート テストを統合テストで処理できるようにしましたが、ここでは却下されました。問題は、単体テストの場合、人々がFooServiceをMockFooServiceに置き換えられるようにしたいということです
この状況を処理する標準的な方法はありますか?