gpt4 book ai didi

phpunit - php命令行模拟文件上传的方法

转载 作者:可可西里 更新时间:2023-11-01 13:11:21 29 4
gpt4 key购买 nike

我是 PHPUnit 测试框架的新手。

我们知道 PHP 的 move_uploaded_file() 函数在通过 http POST 方法上传文件之前不会工作

所以,问题是如何在 PHP 命令行中模拟它

注意:使用 selenium 我们可以模拟 webform.. 但我需要另一种选择。

最佳答案

您基本上需要让您的代码更易于测试。将其分解,以便您可以独立于其余代码测试通过 HTTP 上传文件这一简单行为。 move_uploaded_file 的主要用途是设置一个额外的安全站点,这样您就不会被骗去移动其他文件,move_uploaded_file 只是确保文件是在同一时间上传的请求然后移动它。您也可以使用 rename 简单地移动文件。因此,将您的应用程序分解为一个 Request 对象,它表示并封装当前的 HTTP 请求,包括使用 is_uploaded_file 检查上传的文件。验证通过后,您可以使用 rename 而不是 move_uploaded_file。在您的测试中,您可以模拟 Request 对象并测试您的其他代码。

您也可以简单地使 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

关于phpunit - php命令行模拟文件上传的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13564069/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com