Test Double Framework-如何绕过Tested方法中调用的函数

2020-08-13 17:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我一直在使用test_double框架来测试和分析类中的方法。 通常,由于我们的大多数方法仅包含select和loop语句,因此我将方法加倍并将模拟数据插入到环境中。 但是我们的方法之一是调用某些函数(例如" EQUIPMENT_READ")和某些其他函数来填充某些结构。 因此,仅对方法中的表进行模拟和填充不足以传递这些函数,这些函数希望填充真正的深表以提供某些结果。 我的问题是如何在不使用模拟数据填充表的情况下绕过这些功能,或者如果需要模拟数据填充,如何以最可能的方式处理呢? 原始方法调用以下函数:

调用函数" EQUIPMENT_READ"
           出口
             equi_no = ls_result-eq_number
           输入
             equi = ls_equi
             eqkt = ls_eqkt
           例外情况
             auth_no_begrp = 1
             auth_no_iwerk = 2
             auth_no_swerk = 3
             eqkt_not_found = 4
             equi_not_found = 5
             equz_not_found = 6
             iloa_not_found = 7
             auth_no_ingrp = 8
             auth_no_kostl = 9
             err_handle = 10
             lock_failure = 11 ## NUMBER_OK
             auth_no_badi = 12
             其他= 13。
 

在测试方法中,尽管我填写了以下方法,但填充ls_equi和ls_eqkt却无济于事,因为在更深的一层中,它仍在搜索某些缓冲表。 测试方法:

测试方法:

 class-data:环境类型ref if_osql_test_environment。
        
 rt_equi =值#((equnr ='TU_NUM_1'eqart ='IDMRDTL')
                        (equnr ='TU_NUM_2'eqart ='IDMRDSU'))。


     环境->插入测试数据(i_data = rt_equi)。


     rt_eqkt =值#((equnr ='TU_NUM_1'spras ='E'eqktu ='EQUIPMENT_TXT_1')
                         (equnr ='TU_NUM_2'spras ='E'eqktu ='EQUIPMENT_TXT_2'))。


     环境->插入测试数据(i_data = rt_eqkt)。


     rt_equz =值#((equnr ='TU_NUM_1'datbi ='01012020'eqlfn ='001')
                         (equnr ='TU_NUM_2'datbi ='01012020'eqlfn ='001'))。


     环境->插入测试数据(i_data = rt_equz)。
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我一直在使用test_double框架来测试和分析类中的方法。 通常,由于我们的大多数方法仅包含select和loop语句,因此我将方法加倍并将模拟数据插入到环境中。 但是我们的方法之一是调用某些函数(例如" EQUIPMENT_READ")和某些其他函数来填充某些结构。 因此,仅对方法中的表进行模拟和填充不足以传递这些函数,这些函数希望填充真正的深表以提供某些结果。 我的问题是如何在不使用模拟数据填充表的情况下绕过这些功能,或者如果需要模拟数据填充,如何以最可能的方式处理呢? 原始方法调用以下函数:

调用函数" EQUIPMENT_READ"
           出口
             equi_no = ls_result-eq_number
           输入
             equi = ls_equi
             eqkt = ls_eqkt
           例外情况
             auth_no_begrp = 1
             auth_no_iwerk = 2
             auth_no_swerk = 3
             eqkt_not_found = 4
             equi_not_found = 5
             equz_not_found = 6
             iloa_not_found = 7
             auth_no_ingrp = 8
             auth_no_kostl = 9
             err_handle = 10
             lock_failure = 11 ## NUMBER_OK
             auth_no_badi = 12
             其他= 13。
 

在测试方法中,尽管我填写了以下方法,但填充ls_equi和ls_eqkt却无济于事,因为在更深的一层中,它仍在搜索某些缓冲表。 测试方法:

测试方法:

 class-data:环境类型ref if_osql_test_environment。
        
 rt_equi =值#((equnr ='TU_NUM_1'eqart ='IDMRDTL')
                        (equnr ='TU_NUM_2'eqart ='IDMRDSU'))。


     环境->插入测试数据(i_data = rt_equi)。


     rt_eqkt =值#((equnr ='TU_NUM_1'spras ='E'eqktu ='EQUIPMENT_TXT_1')
                         (equnr ='TU_NUM_2'spras ='E'eqktu ='EQUIPMENT_TXT_2'))。


     环境->插入测试数据(i_data = rt_eqkt)。


     rt_equz =值#((equnr ='TU_NUM_1'datbi ='01012020'eqlfn ='001')
                         (equnr ='TU_NUM_2'datbi ='01012020'eqlfn ='001'))。


     环境->插入测试数据(i_data = rt_equz)。
 
付费偷看设置
发送
2条回答
SKY徐
1楼-- · 2020-08-13 17:50

不得为此使用Open SQL Test Double Framework。 仅当您的测试方法具有Open SQL语句时,才应使用该方法。

相反,您必须具有包装EQUIPMENT_READ的方法,该方法仅返回使用的组件。 然后,您可以轻松地在测试类中使用此方法。

土豆飞人
2楼-- · 2020-08-13 17:53

Hello Sandra,

感谢您的回复。 我可以学习该怎么做吗? 您可以分享一个我可以跟踪的链接吗?

一周热门 更多>