pix*_*tic 16 php upload unit-testing simpletest file-upload
我正在使用simpleTest来编写我的PHP测试.我正在写一个文件上传插件,并想知道我是如何测试它的.
我想检查文件是否正确上传,在正确的文件夹中,在需要时正确返回错误等.
如何模拟文件上传(通过$ _FILES变量)?我应该注意哪些问题?
pix*_*tic 27
我找到了另一种解决方案.我$_FILES用测试数据欺骗了数组,在文件tmp/夹中创建了虚拟测试文件(该文件夹无关紧要,但我试图坚持使用默认值).
问题是,is_uploaded_file并且move_uploaded_file无法使用这个欺骗性的项目,因为它们并没有真正上传POST.我做的第一件事就是将这些函数包装在我自己moveUploadedFile和isUploadedFile我的插件中,这样我就可以模拟它们并改变它们的返回值.
的最后一件事是测试它和覆盖在扩展的类moveUploadedFile使用rename的,而不是move_uploaded_file和isUploadedFile使用file_exists代替is_uploaded_file.
根据文档,SimpleTest支持从版本1.0.1开始的FileUpload测试:
File upload testing Can simulate the input type file tag 1.0.1
Run Code Online (Sandbox Code Playgroud)
我查看了他们网站上的例子,并假设你使用了类似的东西
$this->get('http://www.example.com/');
$this->setField('filename', 'local path');
$this->click('Go');
Run Code Online (Sandbox Code Playgroud)
提交文件,然后使用常规断言检查上传按预期工作.但这真是一个疯狂的猜测,因为我不熟悉SimpleTest,我无法在他们的主页上找到一个例子.您可能想在他们的支持论坛中询问.
但基本上,表单上传文件的测试用量并不多.这是经过试验和测试的浏览器行为.测试处理上传的代码更有意义.我不知道你是如何实现你的FileUpload代码的,但如果我必须实现这个,我将摆脱对$_FILES数组的依赖作为第一件事.创建一个FileRequest可以将$_FILES数组传递给的类.然后,您可以处理从班级上传.这将允许您在不实际上载文件的情况下测试功能.只需相应地设置您的FileRequest实例.你甚至可以用vfsStreamWrapper模拟文件系统,所以你甚至不需要实际的文件.
您可以使用例如卷曲扩展以编程方式生成文件上载.
由于这需要在Web服务器下运行PHP,因此它不是一个单元测试.因此,最好的方法是使用PHPT测试并用数据填充该--POST_RAW--部分.
如果您不知道要放入什么--POST_RAW--,请尝试安装TamperData Firefox扩展,从Firefox提交文件,然后从右侧复制粘贴数据.
| 归档时间: |
|
| 查看次数: |
10538 次 |
| 最近记录: |