POST参数到PHPUnit测试

Ale*_*dra 11 php phpunit

我是测试的新手,我正在使用PHPUnit来编写测试.所有网站都是使用MVC模式设计的.

我想在我的控制器上测试每个方法,问题是这些方法通过$ _POST变量接收参数.我该如何覆盖这个变量?

在此先感谢亚历杭德拉

Enr*_*que 19

首先,如果您使用的是Zend_Test,请使用

$this->request->setMethod('POST')->setPost(array(insert array info here));
Run Code Online (Sandbox Code Playgroud)

如果你不使用它,试试这个:

警告:不是最好的解决方案,但它会起作用!

把它放在你的setUp夹具中

 protected function setUp()
    {
        parent::setUp();
        $_POST = array();
    }
Run Code Online (Sandbox Code Playgroud)

然后在调用测试之前,请执行与此类似的操作:

$_POST = array(insert array data here)
Run Code Online (Sandbox Code Playgroud)


Gor*_*don 16

最好的方法是将Request抽象为一个单独的类,而根本不访问超全局.这样您就可以将实际的服务器和请求环境与应用程序分离.然后,您可以轻松地模拟请求.


Pas*_*TIN 10

即使有些人会说它不干净,你可以在$_POST调用你的方法之前设置数据:它不是只读的;-)