簡體   English   中英

PhpUnit和Laravel 5.4如何在測試期間模擬Session數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM