在Laravel的单元/功能测试中存储和检索会话变量

问题描述:

在Laravel功能测试中,我试图在会话中存储变量,以便在余下的测试中使用它,如下所示:在Laravel的单元/功能测试中存储和检索会话变量

public function testLogin() 
{ 
    $response = $this->json('POST', '/login', $myCredentials); 

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

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

当我运行在命令行“PHPUnit的”,我得到这个错误:

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

显然,“会议()”全球帮手不在测试类的工作。我还试图直接使用“Illuminate \ Session”或“\ Session”与班级合作,但都返回“找不到”错误。如何在测试类中存储和检索会话变量?

在测试中,它有点不同。

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

我想我可以在主测试类中得到它一次,然后将其扩展到其他类,这样我就不需要在每个类上检索标记了, t需要依赖会话。 – americanknight

+0

在大多数情况下,我都这样做,并为所有初始化创建一个主类。 – Stony