我部门的多个小组已经开始使用 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)
}
}
换句话说,每个端点都有一个对应的actor,并且在路由内部,该类型的actor将与请求上下文一起启动,一条消息将传递给它,该actor将处理HttpResponse并停止。
我一直有足够简单的路由树,我只对 Actor 本身进行了单元测试,并让路由测试由集成测试处理,但我在这里被否决了。所以问题是,对于单元测试,人们希望能够用MockFooService替换FooService
有处理这种情况的标准方法吗?