我需要对一些旧脚本添加单元测试,这些脚本基本上都是以下形式:
#!/usr/bin/perl
# Main code
foo();
bar();
# subs
sub foo {
}
sub bar {
}
如果我尝试在单元测试中“要求”此代码,则代码的主要部分将运行,因为我希望能够单独测试“foo”。
有没有办法在不将 foo,bar 移动到单独的 .pm 文件中的情况下执行此操作?
假设您没有安全问题,请将其包装在 sub { ... } 中并对其进行评估:
use File::Slurp "read_file";
eval "package Script; sub {" . read_file("script") . "}";
is(Script::foo(), "foo");
(注意 eval 不在脚本关闭的任何词汇范围内)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)