【发布时间】:2010-03-08 10:04:37
【问题描述】:
我正在编写一些 PHP 代码来解析传入的 URL。它严重依赖于 PHP 全局变量,例如 $_SERVER 和 $_GET。我正在考虑在 PHPUnit 单元测试 setUp() 函数中手动设置这些。有更好的方法吗?
【问题讨论】:
我正在编写一些 PHP 代码来解析传入的 URL。它严重依赖于 PHP 全局变量,例如 $_SERVER 和 $_GET。我正在考虑在 PHPUnit 单元测试 setUp() 函数中手动设置这些。有更好的方法吗?
【问题讨论】:
一个想法是将 $_SERVER 和 $_GET 包装到类中,而不是直接访问它们,这样您就不必完全依赖它们。您在常用框架中经常看到这种方法。这样您就可以轻松地存根或模拟请求,而无需设置超全局变量的状态。
此类的一个示例如下: https://codereview.stackexchange.com/questions/73515/http-request-response-class
【讨论】:
Request($_GET, $_POST, …),在测试中您将使用new Request([], [], …),例如您将传入包含您的 $_GET、$_POST 等预期保存的数组。