模拟导出参数时,Test Double Framework引发异常

2020-09-22 14:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好社区, ...

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

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


你好社区,

当从本地模拟实现过渡到Test Double Framework时,我在使用它对接口上带有 Exporting Parameter 的方法进行双重处理时遇到了一个问题。 当测试方法从"新"双重实例中导入值时,该实例在生成双重类时首次调用该实例中的方法时,将引发CX_ATD_EXCEPTION。

我什至发现了

此博客文章介绍了该框架,但是用于导出参数的示例未将其值导入测试方法中。 将代码复制到系统并接收它们会触发相同的框架异常。

奇怪的是,当两次调用该方法时,但仅在第二次调用中接收到它的值时,它才能按预期工作。

下面是此行为的示例代码。 一个简单的全局界面:

界面zif_test_df public。
   方法is_account_open
     导入i_number类型i
     导出值(e_is_open)键入abap_bool。
 终端接口。
 

单元测试代码:

报告zp_test_df。

 ltc_test类定义风险等级无害持续时间,测试短。
   私人部分。
     方法设置。
     方法fail_when_importing_firstcall进行测试。
     方法passs_when_importng_secndcall进行测试。

     数据m_mock类型引用到zif_test_df。
     数据m_result类型为abap_bool。
 结束类。

 ltc_test类的实现。
   方法设置。
     m_mock?= cl_abap_testdouble => create('ZIF_TEST_DF')。
     cl_abap_testdouble => configure_call(m_mock)-> set_parameter(name ='E_IS_OPEN'value = abap_true)。
   方法。

   方法fail_when_importing_firstcall。
     "使用'[ABAP Testdouble Framework]导入配置调用中不允许的参数来提高CX_ATD_EXCEPTION。使用SET_PARAMETER'
     m_mock-> is_account_open(
       导出i_number = 123
       导入e_is_open = m_result
     )。
   方法。

   方法passs_when_importng_secndcall。
     "首先调用,它会正确初始化double实例。
     m_mock-> is_account_open(
       导出i_number = 123
 *导入ev_is_open = m_result
     )。
     "第二次调用有效,并且m_result从double FW接收值。
     m_mock-> is_account_open(
       导出i_number = 123
       导入e_is_open = m_result
     )。
   方法。
 结束类。
 

单元测试结果:

(18.8 kB)