假设我有一个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,但我还是更喜欢现成的模块。
答案 0 :(得分:4)
我认为CGI::Test
正是您所寻求的。我没有把它用在我自己身上,但是文档说,
CGI :: Test模块提供了一个CGI回归测试框架,允许您离线运行CGI程序,即在Web服务器外部,并以编程方式与它们进行交互,而无需键入数据并从Web浏览器单击。
和
请注意,您可以使用CGI :: Test测试的CGI脚本根本不需要在Perl中实现。就这个框架而言,CGI脚本是在类似CGI的环境中运行并产生输出的可执行文件。
答案 1 :(得分:1)
CGI程序可以像普通应用程序一样执行。它从STDIN和ENV(环境变量)获取其输入参数。所以你必须调用正确的变量,然后读取程序的STDOUT。