如何在单元测试中模拟权限检查?

2020-08-25 18:37发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)如我最近的博客文章,我第一次涉足...

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

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


我最近的博客文章,我第一次涉足ABAP单元测试,这要归功于 Jacques Nomssi Nzali Mike Pokraka 和其他几个 其他人,我已经学到了很多东西,并且一切都很好。

我现在确实有一个未解决的问题,而不是将其隐藏在我的博客文章的评论中,我决定为其启动一个新的问答线程。 目前,我使用Z表来查看是否允许特定用户执行某些操作,并且此操作应按预期进行,并且我还通过模拟表访问获得了合适的测试用例。 因为我仍处于沙盒系统的原型模式下,所以这是实现它的最简单方法,并且比我要替换的代码中的硬编码检查要好。

在将代码移至实际开发系统时,我想将此逻辑切换为适当的授权对象,并检查是否允许用户执行操作。 因此,我的问题是:然后如何在单元测试期间"模拟"权限检查?

我已经在寻找答案,但是即使在此过程中我发现了其他有趣的文章(即 ABAP单位最佳做法 with-abap-unit-tests/" target =" _ blank">使用ABAP单元测试),没有一个包含我特定问题的答案。 那么,有没有一种可以在NW 7.50系统中工作并且不太需要实施呢? 例如,我可以想象按照另一种接口定义(一种用于auth而不是表选择)进行操作,但是不确定这是否是最佳选择。

非常感谢和欢呼

Baerbel

7条回答
compass1988
2020-08-25 18:48

在上面的示例中,CHECK将在生产代码中执行AUTHORITY-CHECK,或者在测试中执行两次测试。

您可以模拟任何东西:

包装要模拟的方法中的代码,最终根据您的情况将方法放在专用类中(ZCL_AUTH_CHECKER)

创建测试 double(类),它将"重新定义" CHECK方法以返回您首次注入的结果。 在您的情况下,您可以注入一个内部假授权(对象,字段,值)表,然后重新定义的CHECK会读取内部表。

在测试类中,您将测试双精度注入ZCL_AUTH_CHECKER, 您注入了伪造的授权,然后调用了受测代码。

一周热门 更多>