【问题标题】:scala spray.io test frameworkscala spray.io 测试框架
【发布时间】:2023-04-07 16:51:02
【问题描述】:

我正在使用带有喷雾路由的 scala spray.io 框架开发后端解决方案。这是我在 scala 中的第一个项目,所以请耐心等待。

这是路由特征:

trait SomeRoute extends HttpService {

  implicit def executionContext = actorRefFactory.dispatcher 

  def actorRef 

  val route = {
    post {
      path("register/") {
        ask( actorRef, CreateUser , 5.seconds).mapTo[ User ].onComplete {
          render response here
        }  
  }

}

这里是 Actor 类

class SomeActor extends Actor with SomeRoute {

  def actorRefFactory = context 

  override def actorRef = this.self

}

我有两个问题要问你:

  • 创建一个额外的从属actor类是个好主意,它将保存“注册”消息并处理用户注册
  • 使用 Specs2RouteTest 给我 actorRefFactory 但不是实际的演员,那么在这种情况下我该如何定义 actorRef?

    class SomeRouteSpec extends Specification with Actor with Specs2RouteTest with SomeRoute{
    
      def actorRefFactory = system
    
      override def actorRef = ???
    
    }
    

提前谢谢你!

【问题讨论】:

    标签: scala testing akka backend


    【解决方案1】:

    最后,我不得不使用 CreateUser 操作返回的 Future 中的 onConplete 函数的问题:

      path( "register/" ) {
        entity( as[ UserRegisterRequest ] ) { 
          userRegInfo => ctx => 
          registerUser( userRegInfo, ctx.complete ) 
        }
      }      
    
      def registerUser( 
                        userReg: UserRegisterRequest, 
                        renderResponse:RenderResponse ): Unit = {
    
          usersOps.createUser(userReg, 
                              DateTime.now.plus( 
                                Period.days(vcsettings.passExpired ) ) )
          .onComplete { 
           ( tryObj ) => renderResponse { 
            tryObj match { 
              case Success( user ) => VcResponse( "register_user:", 
                Map("user:" -> user.get.id ) )           
    
              case Failure( e ) => {
                logger < "can't register user: $userReg.toString" 
                _error_getting_user_messages_             
              }
            }
          }
        }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多