2011-10-05 61 views
7

我正在使用一个web应用程序,通常它运行在Apache下的mod_perl中。我和同事正在尝试做一些单元测试。是否有任何好的工具或技术用于模拟会话和请求等,这些可以帮助我们在Web服务器上下文之外执行此代码?为单元测试嘲弄Apache会话数据

回答

3

如果您使用的是mod_perl 1,则有mod_perl附带的Apache::FakeRequest。它不是请求对象的完整模拟,所以你必须添加一些你自己的方法。如果你的代码使用Apache::Request更是如此。还有更多的cookies和上传。大多数情况下,您将花费大量的时间与Test::MockObject。幸运的是,Apache对象接口非常简单。

如果可能的话,你应该考虑切换到一个基于Plack的框架(Catalyst,Dancer等),它们提供了更强大的测试和调试功能。如果你使用mod_perl2,你很幸运!很容易(相对于mod_perl 1)用Plack包装mod_perl2应用程序。 Plack::App::FakeApache会为您完成大部分工作。 Here is a discussion勾画出各种技术和好处。

+0

mod_perl 2还有[Apache2 :: FakeRequest](https://metacpan.org/pod/Apache2::FakeRequest)。 – Flimm