cl_abap_testdouble验证调用参数-充当间谍

2020-08-27 16:20发布

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

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


您好,怎么可能将cl_abap_testdouble框架用作间谍-检查是否使用某些确切的调用参数调用了模拟程序? 我有一个cut,我隔离了依赖关系,创建了一个全局接口,我需要检查是否将使用一些确切的参数从我的cut中调用我的模拟。

我当前的解决方案(不使用cl_abap_testdouble)是我创建了一个用于测试的本地类,测试double/spy。 该间谍会保存调用参数,然后将其提供给我的单元测试中,在该单元测试中,我使用cl_abap_unit_assert => assert_equals来验证剪切是否按预期发送给了间谍。

谢谢。

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

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


您好,怎么可能将cl_abap_testdouble框架用作间谍-检查是否使用某些确切的调用参数调用了模拟程序? 我有一个cut,我隔离了依赖关系,创建了一个全局接口,我需要检查是否将使用一些确切的参数从我的cut中调用我的模拟。

我当前的解决方案(不使用cl_abap_testdouble)是我创建了一个用于测试的本地类,测试double/spy。 该间谍会保存调用参数,然后将其提供给我的单元测试中,在该单元测试中,我使用cl_abap_unit_assert => assert_equals来验证剪切是否按预期发送给了间谍。

谢谢。

付费偷看设置
发送
2条回答
1楼 · 2020-08-27 16:48.采纳回答

经过数小时的网上阅读cl_abap_testdouble示例并尝试在我的项目中自己编码,我发现答案是肯定的,可以设置cl_abap_testdouble来检查是否使用某些确切的调用参数调用了该模拟。

在下面的示例中,我有一个接口方法zyfinm_get_emp_data_hrmm,我要检查是否在导入参数im_pernr = li_pernr_1stcall时调用了它(在第一次调用中,仅一次):

cl_abap_testdouble => configure_call(me-> l_emp_data_mock)-> set_parameter(name ='ex_emp_data'value = li_emp_data_1stcall)-> and_expect()-> is_called_times(1)。

me-> l_emp_data_mock-> zyfinm_get_emp_data_hrmm(导出im_pernr = li_pernr_1stcall)。

如果用不同的im_pernr调用该方法,则在我的测试方法中,我得到了ABAP单元异常,即" ... zyfinm_get_emp_data_hrmm被调用了0次"

使用cl_abap_testdouble工作了几个小时后,我可以说它非常有价值,非常易于使用。 与创建"用于测试"的测试双打/间谍相比,使用它要好得多。 幸运的是,我决定在项目中仅使用全局类和接口(这比使用本地类和接口要好得多),因此可以使用cl_abap_testdouble。 与我建立了一些通用文本夹具的抽象测试类一起,现在我可以使我的单元测试具有可伸缩性,以与使用多态性的生产代码一起使用(带有子类的抽象类),因此可以避免在生产和测试单元中重复 代码。

所以我现在可以结束这个问题。

槿木_熙
2楼-- · 2020-08-27 16:52

您保存了我的一天!

一周热门 更多>