【问题标题】:How to instantiate a BSP controller manually如何手动实例化 BSP 控制器
【发布时间】:2013-02-21 23:04:35
【问题描述】:

我最初尝试过

DATA: cl_rest_bo_list TYPE REF TO zcl_rm_rest_bulk_orders.
CREATE OBJECT cl_rest_bo_list.
cl_rest_bo_list->request->if_http_request~set_method( 'GET' ).
cl_rest_bo_list->do_request( ).

这导致异常结束,访问未初始化的request

然后我尝试实例化请求和响应

DATA: cl_rest_bo_list TYPE REF TO zcl_rm_rest_bulk_orders.
DATA: cl_request  TYPE REF TO cl_http_request.
DATA: cl_response TYPE REF TO cl_http_response.
CREATE OBJECT cl_rest_bo_list.
CREATE OBJECT cl_request.
CREATE OBJECT cl_response.
request->if_http_request~set_method( 'GET' ).
cl_rest_bo_list->request = cl_request.
cl_rest_bo_list->response = cl_response.    
cl_rest_bo_list->do_request( ).

这个,至少不会异常结束,只是set_method在这里返回错误码,并没有真正设置方法。

  system-call ict
    did
      ihttp_scid_set_request_method
    parameters
      m_c_msg                            " > c handle
      method                             " > method
      m_last_error.                      " < return code

由于谷歌不知道 ihttp_scid_set_request_method,我很确定我做错了。也许没有实例化 BSP 控制器的规定,尽管我不确定这对 ABAP 单元测试 BSP 控制器意味着什么。

作为目前的解决方案,我已将所有业务逻辑提升到一个单独的方法中,该方法可以毫无问题地被调用/测试。不过,如果有人知道如何实例化 CL_BSP_CONTROLLER2 类,那就太好了。

【问题讨论】:

  • 抱歉,不清楚您要达到的目标。您是尝试使用 http 客户端请求访问 Web 上的资源还是尝试提供服务?
  • 我正在尝试直接从 BSP 控制器访问资源,而不使用 http 客户端。
  • 好的,所以根据下面的答案并再次阅读您的问题,如果您想对控制器进行单元测试,唯一的“接口”是您发送 ICF 的请求和您得到的响应.这是实例化 BSP 控制器的最简洁的方法。 (正如 vwegert 所指出的,控制器从 ICF 接收其数据。将业务逻辑从中分离出来是一个很好的举措)。所以是的,您可以通过使用任何客户端发送 HTTP 请求来实例化 BSP 控制器,无论是脚本还是其他。那么问题是在运行时访问控制器,但是您希望从中得到什么?
  • 如果我需要通过HTTP请求实例化,那么访问控制器的点确实没有实际意义。

标签: abap sap-bsp


【解决方案1】:

据我所知,BSP 控制器只能从 ICF 处理中实例化,因为它从内核检索有关调用的信息。我不确定您为什么要首先为 UI 安装单元测试,除非您没有按照您对“提升”的评论建议将 UI 和业务逻辑分开......

【讨论】:

  • 控制器只做JSON格式的数据,更像是控制器和业务逻辑的分离。
  • @tomdemuyt:那你为什么要使用 BSP 控制器而不是 ICF HTTP 处理程序类?这可能会为您节省一些开销...
  • “对于只有锤子的人来说,他遇到的一切都开始像钉子了。”感谢您提及 ICF HTTP 处理程序类。
  • @tomdemuyt 快乐的锤击日,然后:-)
猜你喜欢
  • 2011-01-05
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
相关资源
最近更新 更多