我是PHPUnit测试框架的新手.
我们知道,move_uploaded_file()在通过http POST方法上传文件之前,PHP的功能不起作用
所以,问题是如何在PHP命令行中模拟这个
注意:使用selenium我们可以模拟webform ..但我需要另一种选择.
您基本上需要使您的代码更易于测试.将其分解,以便您可以测试通过HTTP分别从其余代码上传文件的简单操作.主要用途move_uploaded_file是提供额外的安全停止,这样您就不会被诱骗移动其他文件,move_uploaded_file只需确保文件是在同一请求中上传然后移动它.您也可以使用rename它来简单地移动文件.因此,请将应用程序分解为具有一个Request表示并封装当前HTTP请求的对象,包括使用它来检查上载的文件is_uploaded_file.一旦验证,您可以使用rename而不是move_uploaded_file.在测试中,您可以模拟Request对象并测试其他代码.
你也可以简单地制作move_uploaded_filemockable,例如:
class Foo {
public function do() {
...
$this->move_uploaded_file($from, $to);
...
}
protected function move_uploaded_file($from, $to) {
return move_uploaded_file($from, $to);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,在测试中,您可以扩展/模拟类并重写Foo::move_uploaded_file为always return true.
| 归档时间: |
|
| 查看次数: |
7501 次 |
| 最近记录: |