【发布时间】:2019-03-26 14:05:57
【问题描述】:
我有一个测试套件,其中包含数百个针对我尚未发布的 perl 模块的测试,它是一个命令行界面。因为它是一个命令行界面,所以测试(直到现在)都是为了将代码放入模板中,然后使用系统调用调用模板脚本。
我最近添加了一个对第三方模块的可选依赖,它不是核心 perl 的一部分。我知道无论是否安装了该模块,我的模块都可以工作,因为我有一台安装了它的计算机,而另一台没有安装该模块,并且该模块在每种情况下都可以正常工作。但是,我希望能够编写一个测试来确认当第 3 方模块不存在时我的模块是否可以工作 - 即使第 3 方模块 是,我也希望该测试可以工作> 已安装,但表现得好像没有安装一样。
理想情况下,我可以使用我为测试设置的结构对模板脚本进行系统调用。我知道我可以编写一个单独的测试脚本来操作 BEGIN 块中的 @INC,导入使用该模块的特定方法,然后像单元测试一样调用它们。但是我想知道是否有一种方法可以使用我已经使用所有其他测试的测试结构,即进行系统调用。
那么有没有办法通过 perl 命令行选项排除模块导入?我试过 -M-Module,但代码use Module 仍然会导入模块。
顺便说一句,我的模块在 eval 中使用了第 3 方模块,这就是我将其设为可选的方式。
【问题讨论】:
标签: perl