PhpUnit和Laravel 5.4如何在测试期间模拟会话数据
我正在用phpunit测试Laravel5.4中的一个类,该类使用会话获取数据。在应用程序运行时直接访问会话数据(也称为“会话('consumer'))时,检索会话数据会起作用。当我尝试测试使用会话的函数时,会出现以下错误: ReflectionException:类会话不存在 有人能告诉我们如何在测试期间设置会话数据吗 我试过使用:PhpUnit和Laravel 5.4如何在测试期间模拟会话数据,php,laravel,phpunit,laravel-session,Php,Laravel,Phpunit,Laravel Session,我正在用phpunit测试Laravel5.4中的一个类,该类使用会话获取数据。在应用程序运行时直接访问会话数据(也称为“会话('consumer'))时,检索会话数据会起作用。当我尝试测试使用会话的函数时,会出现以下错误: ReflectionException:类会话不存在 有人能告诉我们如何在测试期间设置会话数据吗 我试过使用: $this->session()->put([$array\u value])但出现错误“class\u im\u测试中不存在类会话” 提前感谢您的帮助 publ
$this->session()->put([$array\u value])
但出现错误“class\u im\u测试中不存在类会话”
提前感谢您的帮助
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);
}
Laravel提供了很多方法来帮助测试,但是为了使用它们,您需要确保使用的是正确的类 如果您使用的是默认样板文件,则会得到一个类。这是需要扩展的类,以便获得方法,如
$This->withSession
这是因为测试用例扩展了框架类,而框架类又包含了许多特性,其中的特性是the trait,它实际上提供了方法和session
此外,Laravel测试用例还扩展了PhpUnit测试用例,因此您仍然可以访问所有PhpUnit断言 根据@apokryfos使用“$this->withSession([…])时返回的错误,它应该是
$this->withSession([…])
调用未定义的函数类\u im\u testing::withSession@Leevashan该方法应该在测试用例类中,而不是在您正在测试的类中。确保您的测试用例扩展了laravel附带的类,而不是默认的PhpUnit测试用例类laravel的测试用例扩展,后者有许多额外的方法,还包括许多特点。您的withSession
方法实际上就是从中获得的,这是其中包含的特征之一。感谢您的指导,正如Leevashan指出的,导入正确的TestCase类解决了我们的问题。
public function getUser()
{
$user = new User(session('consumer'));
return $user;
}