1

最初に試しました

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

Googleはihttp_scid_set_request_methodについて知らないので、私はこれを間違っていると確信しています。BSPコントローラをインスタンス化するためのプロビジョニングがない可能性がありますが、これがABAPユニットテストのBSPコントローラにとって何を意味するのかはわかりません。

今のところ解決策として、私はすべてのビジネスロジックを、問題なく呼び出され/テストされる別のメソッドに持ち上げました。それでも、CL_BSP_CONTROLLER2クラスをインスタンス化する方法を誰かが知っているなら、それは素晴らしいことです。

4

1 に答える 1

2

私の知る限り、BSPコントローラーは、カーネルからの呼び出しに関する情報を取得するため、ICF処理内からのみインスタンス化できます。「リフティング」についてのコメントが示唆するように、UIとビジネスロジックを分離しなかった場合を除いて、そもそもUIの単体テストをインストールする理由がわかりません。

于 2013-02-22T07:34:37.203 に答える