2010-04-27 121 views
11

我是新的測試,我使用PHPUnit編寫測試。所有的網站都是使用MVC模式設計的。POST參數到PHPUnit測試

我想測試我的控制器上的每個方法,問題是這樣的方法通過$ _POST變量接收參數。我怎樣才能覆蓋這個變量?

在此先感謝亞歷杭

回答

15

最好的辦法是抽象的請求到一個單獨的類,而不是在所有訪問超全局。這樣你可以將實際的服務器和請求環境從應用程序中分離出來。然後,您可以輕鬆模擬請求。

+0

但有必要對此進行測試的要求獨立的類。如何做到這一點最好的方法? – 2014-09-13 07:02:18

+0

@ViktorTodorov進行單元測試。如果您想針對多個SAPIs進行測試:使用集成測試 – Gordon 2014-09-13 07:45:27

9

即使有些人會說這不是乾淨,你可以在$_POST設定數據,callng你的方法之前:這不是隻讀;-)

17

首先,如果你使用的是Zend_Test,使用

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

如果你沒有使用,試試這個:

警告:不是最好的解決辦法,但它的工作!

在你的安裝夾具將這個

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

然後你打電話給你測試只是做一些類似的面前:

$_POST = array(insert array data here) 
+0

此答案的第一部分非常有幫助。謝謝。 – 2011-04-10 15:19:16

+0

即使是第二部分也幫助我進行了TYPO3和單元測試 – 2016-05-02 11:04:18