我正在使用phpunit在laravel 5.4中测试一个使用会话获取数据的类。当应用程序运行时,也就是直接访问会话数据时,检索会话数据有效。“ session('consumer')”返回一个值,但是当我尝试测试使用该会话的函数时,出现以下错误:
ReflectionException:类会话不存在
有人可以说明如何在测试期间完成会话数据的设置。
我尝试使用:
$this->session()->put([$array_value])
,但出现错误“ class_im_testing上不存在课程会话”
在此先感谢您的帮助!
public function test_get_user()
{
$mockUser = [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
];
session->put('consumer', [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
]);
$user = $this->repo->getUser();
$this->assertEqual($user, $mockUser);
}
public function getUser()
{
$user = new User(session('consumer'));
return $user;
}
答案 0 :(得分:2)
Laravel提供了很多方法来帮助测试,但是要使用它们,您需要确保使用正确的类。
如果您使用默认样板,则将获得TestCase
类。这是您需要扩展以获取诸如$this->withSession
之类的方法的类。
这是因为测试用例扩展了框架TestCase
类,该类又包含许多特征,其中包括特征InteractsWithSession
,这是实际上提供方法withSession
的特征。
此外,Laravel TestCase还扩展了PhpUnit测试用例,因此您仍然可以访问所有PhpUnit断言。