[英]PhpUnit and Laravel 5.4 how to mock Session data during a test
我正在使用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;
}
Laravel提供了許多方法來幫助測試,但為了使用它們,您需要確保使用正確的類。
如果您使用的是默認樣板,則會獲得TestCase
類。 這是您需要擴展的類,以便獲取$this->withSession
。
這是因為測試用例擴展了Framework TestCase
類,后者又包含許多特征,其中就是特征InteractsWithSession
,它是實際提供方法withSession
。
此外,Laravel TestCase還擴展了PhpUnit測試用例,因此您仍然可以訪問所有PhpUnit斷言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.