2016-08-12 47 views
0

我在寫一個使用Symfony的php網站。最簡單的方法來創建一個模擬/存根一個FilterUserResponseEvent實例?

我正在編寫一個模塊,用於偵聽FilterUserResponseEvent對象。

我想創建一個模擬FilterUserResponseEvent對象,該對象將包含一個合適的請求對象,該對象包含一個我可以設置的cookie。

即我想製造一個合適的$event變量進入下面的函數。我希望能夠在我的測試中預先定義$value = $request->cookies->get('cookie');的結果。

use FOS\UserBundle\Event\FilterUserResponseEvent; 

public function onRegistrationCompleted(FilterUserResponseEvent $event) 
{ 

    $response = $event->getResponse(); 
    $request = $event->getRequest(); 

    // get cookie 
    $value = $request->cookies->get('cookie'); 

} 

我該怎麼做?我想下面的代碼

$request = new stdClass();  
    $request->cookies = new stdClass(); 
    $request->cookies->get = function($key){ 
     return 'cookie'; 
    }; 

    print( $request->cookies->get('asd')); 

,但它給了我這個錯誤:

Error: Call to undefined method stdClass::get() 

回答

1

我覺得這是更好地只使用從http基金會分量RequestCookie類。

<?php 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\ParameterBag; 

$request = new Request(); 
$request->cookies = new ParameterBag($your_cookies); 

Request類不需要任何特定的arg從環境中正常工作。同樣如您在Http-Foundation的Tests中看到的,不使用存根。

+0

謝謝。你已經提醒我,有時候瞭解某些東西的最好方法就是查看源代碼! – Ginger

相關問題