2017-10-09 11 views
1

Laravelのフィーチャテストでは、セッションの変数を保存して残りのテストで使用できるようにしています。Laravelのユニット/フィーチャテストでのセッション変数の保存と取得

私は、コマンドラインで「PHPUnitのを」実行すると
public function testLogin() 
{ 
    $response = $this->json('POST', '/login', $myCredentials); 

    $response 
     ->assertStatus(200) 
     ->assertJson([ 
      'token' => true 
     ]); 

    session(['token' => $response['token']]); 
} 

、私はこのエラーを取得する:

PHP Fatal error: Uncaught ReflectionException: Class session does not exist in /vendor/laravel/framework/src/Illuminate/Container/Container.php:752

はどうやら「セッション()」グローバルヘルパーは、テストクラスでは動作しません。私はまた、 "Illuminate \ Session"または単に "\ Session"を使ってクラスと直接作業しようとしましたが、どちらも "見つからない"エラーで返されました。テストクラス内でセッション変数を保存および取得するにはどうすればよいですか?

答えて

0

テストでは少し違います。ここで

https://laravel.com/docs/5.2/testing#sessions-and-authentication

例です。

public function testApplication() 
{ 
    $this->withSession(['foo' => 'bar']) 
     ->visit('/'); 
} 
+0

私が何をしようとしている、それを保存し、その後、私の最初のリクエストからトークン変数を取得し、複数のクラスに複数の方法を渡ってそれを使用しています。私はwithSession()メソッドを使ってこれをどのように達成できるのか分かりません。なぜなら私は必要なものが再帰的な問題を提示するからです: "$ this-> withSession(['token' => session( 'token')]"私はすべてのクラスのトークンを取得する必要がありますか?不必要なHTTP要求を避けようとしています – americanknight

+0

マスターテストクラスで1回取得してから、これを他のクラスに拡張することができます。セッションに頼る必要はありません。 – americanknight

+0

ほとんどの場合、私は同じことを行い、すべての初期化のマスタークラスを作成します... – Stony

関連する問題