使用Zend Framework进行文件上载和单元测试

use*_*056 2 php upload zend-framework file

如何最好地测试接收文件上传的控制器动作Zend_Test_PHPUnit_ControllerTestCase

理想情况下,$this->getRequest()->setPost()会在数据数组中使用文件名,但似乎不支持.

我愿意在这个阶段在命令行上引导/运行我的应用程序并创建一个请求对象以传递给前端控制器.这会绕过Zend_Test_PHPUnit_ControllerTestCase,但我随后可以检查文件是否通过$this->dispatch('/some/url')ControllerTestCase中的后续文件正确上传.但是,我也对如何使用此方法将文件放入请求对象感到困惑.

我现在唯一能想到的就是通过指向app(APPLICATION_ENV='testing')的命令行启动HTTP服务器,并通过Zend的Http Client或CURL等进行文件上传.这并没有让我觉得非常优雅.

其他人不得不处理这个问题?

谢谢!

jas*_*son 6

我建议从组件中查看单元测试Zend_File_Transfer.他们将能够对此提供一些见解.

基本上,您可以$_FILES直接在setUp()单元测试中操作超全局.接下来,对任何外部服务使用模拟对象,否则您不是真正的单元测试,而是集成测试.

我不担心测试上传文件的实际过程.这是网络服务器和语言的领域; 重要的是你正确地测试你对收到的文件做了什么(或没有).

但是,这一切都取决于您现在如何处理文件上传.如果您提供了有关如何处理文件上传的更多详细信息,我可以提供更多建议.