3

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任何替代品漂亮?

4

1 回答 1

7

我想你想看看Plack::App::WrapCGI。当你给它一个 Perl 脚本作为参数时,它使用类似于ModPerl::Registry的技术将你的 CGI 脚本编译成一个 PSGI 应用程序。即使它不知道如何做到这一点,它也有能力从 PSGI 环境中模拟一个完整的 CGI 环境,这意味着它可以派生和执行一个真正的 CGI 脚本(甚至是用另一种语言编写的)和在任何类型的 Plack 处理程序下运行它,包括 Plack::Test。

于 2012-02-23T03:12:53.083 回答