【发布时间】:2019-01-28 10:59:03
【问题描述】:
我正在使用 phpunit 测试 laravel 5.4 中的一个类,该类使用会话获取数据。在应用程序运行时直接访问会话数据时检索会话数据有效,即“会话('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;
}
【问题讨论】:
-
根据the docs应该是
$this->withSession([ ... ]) -
@apokryfos 使用“$this->withSession([...])”时返回的错误调用未定义函数 class_im_testing::withSession
-
@Leevashan 该方法应该在测试用例类中,而不是在您正在测试的类中。
-
确保你的测试用例扩展了 laravel 自带的
TestCase类,而不是默认的 PhpUnit 测试用例类 -
Laravel 的测试用例扩展了this
TestCase,它有很多额外的方法,也包括很多特征。您的withSession方法实际上来自InteractsWithSession,这是包含的特征之一。
标签: php laravel phpunit laravel-session