假外部程序的CGI环境

时间:2011-05-05 09:30:44

标签: perl unit-testing

假设我有一个CGI脚本,不一定用Perl编写,我想对它进行单元测试。

当然我可以使用网络服务器和LWP :: UserAgent,但我认为这有点过分。

那么,我怎样才能在perl中运行CGI程序?例如。在伪代码中:

my $reply = fake_cgi("/path/to/prog.cgi", foo=>"bar", count=>1);
like ($reply->content, qr/<title>/, "Title is always present");

我找到了this advice,但我还是更喜欢现成的模块。

2 个答案:

答案 0 :(得分:4)

我认为CGI::Test正是您所寻求的。我没有把它用在我自己身上,但是文档说,

  

CGI :: Test模块提供了一个CGI回归测试框架,允许您离线运行CGI程序,即在Web服务器外部,并以编程方式与它们进行交互,而无需键入数据并从Web浏览器单击。

  

请注意,您可以使用CGI :: Test测试的CGI脚本根本不需要在Perl中实现。就这个框架而言,CGI脚本是在类似CGI的环境中运行并产生输出的可执行文件。

答案 1 :(得分:1)

CGI程序可以像普通应用程序一样执行。它从STDIN和ENV(环境变量)获取其输入参数。所以你必须调用正确的变量,然后读取程序的STDOUT。