我有一些脚本,我已经开始使用“modulino”的想法进行单元测试。我遇到了一个问题,当使用“perl -d”调用脚本时,脚本不会运行,因为 caller() 返回真值。
我将脚本的主体包裹在 main() 中,并且一些子例程慢慢地从 main() 中拉出到它们自己的子例程中。
在脚本的顶部,我有:
main(@ARGS) unless caller();
当在 .t 测试中调用时,它可以按我的意愿工作,而不是运行 main() 以便我可以测试子例程。当我从 CLI 调用脚本时,调用 main() 效果很好。
当我从 CLI 调用它时出现问题:
perl -d myscript.pl
在这个阶段,调用者返回一个有效值(而不是 undef)并且不调用 main。
关于如何处理这个问题的建议将不胜感激。
最佳答案
-d
的情况switch 与测试类似 - 你的代码由其他东西执行,在这种情况下是调试器。
您可以运行 main
自己在调试器中手动调用它,或者您必须检测 caller
是调试器。就像是:
main(@ARGS) if !caller() || (caller)[0] eq 'DB';
关于Perl -d 和 modulino 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365335/