一个SAP cds view test double的例子

*"* use this source file for your ABAP unit test classes
CLASS lcl_test_productshorttex
DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS .
  PRIVATE SECTION.
    CLASS-DATA:
      environment TYPE REF TO if_cds_test_environment.
    CLASS-METHODS:
      class_setup
        RAISING
          cx_static_check,
      class_teardown.
    DATA:
      test_data   TYPE REF TO if_cds_test_data,
      act_results TYPE STANDARD TABLE OF p_crms4_productshorttext  WITH EMPTY KEY,
      makt_data   TYPE STANDARD TABLE OF makt  WITH EMPTY KEY,
      mara_data   TYPE STANDARD TABLE OF mara  WITH EMPTY KEY.

    METHODS:
      setup RAISING cx_static_check,

      insert_test_data IMPORTING
                         it_data     TYPE ANY TABLE
                         iv_viewname TYPE string,
      test_single_record      FOR TESTING RAISING cx_static_check.

ENDCLASS.


CLASS lcl_test_productshorttex  IMPLEMENTATION.
  METHOD class_setup.
    environment = cl_cds_test_environment=>create(   i_for_entity ='PRODUCTSHORTTEXT'  ).
  ENDMETHOD.

  METHOD setup.
    environment->clear_doubles( ).
  ENDMETHOD.

  METHOD class_teardown.
    environment->destroy( ).
  ENDMETHOD.

  METHOD insert_test_data.
    CLEAR test_data.
    test_data = cl_cds_test_data=>create( i_data = it_data ).
    DATA(z_test_data_dbl) = environment->get_double( i_name = iv_viewname ).
    z_test_data_dbl->insert( test_data ).
  ENDMETHOD.

  METHOD test_single_record.
    DATA: ls_productshorttext TYPE productshorttext,
          lt_productshorttext TYPE TABLE OF productshorttext.

    makt_data = VALUE #(  (
           mandt =  sy-mandt
           matnr =  'JA-1010-NOT_EXIST'
           spras =  'E'
           maktx =  'JDK Version 1.6'
           maktg =  'JDK VERSION 1.6'  )   ).
    insert_test_data( it_data = makt_data iv_viewname = 'MAKT' ).

    mara_data = VALUE #(  (
                    mandt = sy-mandt
                    matnr = 'JA-1010-NOT_EXIST'
                    scm_matid_guid16 =  '6C0B84B759DF1ED6B0D80E896AE01049'
                 ) ).
    insert_test_data( it_data = mara_data iv_viewname = 'MARA' ).

    lt_productshorttext = VALUE #(  (
                                      productguid = '6C0B84B759DF1ED6B0D80E896AE01049'
                                      language = 'E'
                                      productname = 'JDK Version 1.6'
                                      productnamelarge = 'JDK VERSION 1.6'
                                   )  ).

    SELECT * FROM productshorttext INTO TABLE @DATA(act_results).

    cl_abap_unit_assert=>assert_equals( act = lines( act_results )
                                         exp = 1 ).

    READ TABLE act_results INDEX 1 INTO ls_productshorttext.
    cl_abap_unit_assert=>assert_table_contains( line = ls_productshorttext
                                        table =  lt_productshorttext ).
  ENDMETHOD.

ENDCLASS.
发布了6288 篇原创文章 · 获赞 617 · 访问量 98万+

猜你喜欢

转载自blog.csdn.net/i042416/article/details/103896471