gpt4 book ai didi

perl - 我怎样才能防止 Perl 使用模块进行测试?

转载 作者:行者123 更新时间:2023-11-28 19:48:04 31 4
gpt4 key购买 nike

我正在开发一套 Perl 脚本和模块,然后将其部署到我们公司周围的不同机器和系统上。一些设施依赖于特定的模块,该模块可能安装在也可能不安装在不同的机器上。我已经使用“eval”来检测这个模块是否可用。

我刚刚收到一份故障报告,归结为用户没有在他的机器上成功安装模块(但没有意识到他没有):但我代码中的错误是在这种情况下,我没有将错误条件向上传递到顶层,所以它迷路了,脚本只是默默地未能执行其部分功能。

为了调查它,我禁用了我机器上的特定模块,并轻松地找到并解决了问题。但是我能想到的禁用它的唯一方法,除了卸载它之外,就是重命名文件(当然,我必须通过 sudo 来完成)。

我现在在这个模块不可用的情况下运行我的所有测试,它已经抛出了一些我没有正确处理这种情况的地方。

但是我现在想做的是针对这种情况编写一些测试:但是我怎样才能在自动测试中明智地使这个模块暂时不可用。我真的不希望我的测试使用 sudo 将模块移开(我可能同时在机器上做其他事情)。

有没有人知道我可以告诉 Perl“无论我出于测试目的而尝试‘使用’或‘要求’它的任何地方,都找不到这个模块”?

我正在运行 Perl 5.10.0(在 Fedora 12 上),并使用 Test::More 和 TAP::Harness。我们的一些安装正在运行 Perl 5.8,因此我愿意在测试中使用 5.10 功能,但不在代码本身中使用。

最佳答案

有几个 CPAN 模块可以做到这一点。我经常用的是Test::Without::Module .另一个是 Devel::Hide .这两个,以及其他几个我现在不太记得名字的人,都以几乎相同的方式工作,通过 @INCCORE 连接到 perl 的模块加载: :GLOBAL::requireperldoc -f require 中记录了详细信息。

关于perl - 我怎样才能防止 Perl 使用模块进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907467/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com