我是
PHPUnit测试框架的新手.
我们知道,在通过http POST方法上传文件之前,PHP的move_uploaded_file()函数不起作用
所以,问题是如何在PHP命令行中模拟这个
注意:使用selenium我们可以模拟webform ..但我需要另一种选择.
您基本上需要使您的代码更易于测试.将其分解,以便您可以测试通过HTTP分别从其余代码上传文件的简单操作. move_uploaded_file的主要用途是放入一个额外的安全停止,这样你就不会被诱骗移动其他文件,move_uploaded_file只是确保文件是在同一个请求中上传然后移动它.您也可以使用重命名简单地移动文件.因此,将应用程序分解为具有一个Request对象,该对象表示并封装当前的HTTP请求,包括使用is_uploaded_file检查上载的文件.验证完成后,您可以使用重命名而不是move_uploaded_file.在测试中,您可以模拟Request对象并测试其他代码.
原文链接:https://www.f2er.com/php/133106.html您也可以简单地使move_uploaded_file成为可模拟的,例如:
class Foo { public function do() { ... $this->move_uploaded_file($from,$to); ... } protected function move_uploaded_file($from,$to) { return move_uploaded_file($from,$to); } }
在测试中,您可以扩展/模拟类,并覆盖Foo :: move_uploaded_file以始终返回true,例如.