CGI风格的perl脚本很难用这种方式测试:
def test_it_says_hello_to_a_person
get '/home.pl', :name => 'Simon'
assert last_response.body.include?('Simon')
end
(注意:代码是ruby,使用Rack::Test
)。
但是如果我可以将静态文件转换为PSGI应用程序
(代码参考,接受$env
作为参数,返回[$status, $header, $body]
),事情会很简单,Plack::Test
将完成其余工作。
我正在阅读PSGI规范,通常我可以看到这条路线。但我仍然想知道这有什么存在的问题吗?
另外,我认为Plack::Test
的界面不如Rack::Test
,任何替代品都漂亮吗?
答案 0 :(得分:7)
我想你想看看Plack::App::WrapCGI。当你给它一个Perl脚本作为参数时,它使用类似于ModPerl::Registry的技术将你的CGI脚本编译成PSGI应用程序。即使它无法弄清楚如何做到这一点,它也能够从PSGI环境模拟一个完整的CGI环境,这意味着它可以分叉并执行一个真正的CGI脚本(甚至用另一种语言编写的脚本)和在任何类型的Plack处理程序下运行它,包括Plack :: Test。