我是测试的新手,我正在使用PHPUnit来编写测试。所有网站都是使用MVC模式设计的。
我想在我的控制器上测试每个方法,问题是这些方法通过$ _POST变量接收参数。我该如何覆盖这个变量?
提前致谢 亚历杭德拉
答案 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
中设置数据:它不是只读的; - )