2016-08-12 11 views
0

私はSymfonyを使用してPHPウェブサイトを作成しています。FilterUserResponseEventインスタンスをモック/スタブで作成する最もクリーンな方法は?

FilterUserResponseEventオブジェクトをリッスンするモジュールを作成しています。

設定可能なクッキーを含む適切なリクエストオブジェクトを含むモックFilterUserResponseEventオブジェクトを作成したいと思います。

つまり、適切な$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クラスは、環境から適切に動作するための特定の引数を必要としません。また、Http-FoundationのTestsにあるように、スタブは使用されません。

+0

ありがとうございました。あなたが何かを学ぶ最も良い方法は、ソースコードを見ることだけであることを私は思い出しました! – Ginger

関連する問題