在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('/');
}
我试图做的是从我的第一个请求获得令牌变量,那么它存储在多个类使用它在多个方法。我不知道如何用withSession()方法来实现这一点,因为我需要的会呈现递归问题:“$ this-> withSession(['token'=> session('token')]”或者我试图避免不必要的HTTP请求 – americanknight
我想我可以在主测试类中得到它一次,然后将其扩展到其他类,这样我就不需要在每个类上检索标记了, t需要依赖会话。 – americanknight
在大多数情况下,我都这样做,并为所有初始化创建一个主类。 – Stony