POST参数到PHPUnit测试

时间:2010-04-27 16:12:22

标签: php phpunit

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

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

提前致谢 亚历杭德拉

3 个答案:

答案 0 :(得分:19)

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

$this->request->setMethod('POST')->setPost(array(insert array info here));

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

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

将它放入你的setUp fixture

 protected function setUp()
    {
        parent::setUp();
        $_POST = array();
    }

然后在你打电话给你的测试之前,做一些类似的事情:

$_POST = array(insert array data here)

答案 1 :(得分:15)

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

答案 2 :(得分:9)

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