簡體   English   中英

如何對 cookie 是否在 Laravel 中排隊或設置進行單元測試

[英]How to unit test if the cookie was queued or set in Laravel

我正在開發 Laravel 應用程序。 我正在為我的應用程序編寫集成測試。 我正在努力測試 Cookie 邏輯。 你可以在下面看到我的代碼。

我正在覆蓋 LoginController 的登錄方法,添加以下位

if (auth()->user()->hasRole(User::ROLE_ADMIN)) {
                $accessToken = GraphQL::login($request->get('email'), $request->get('password'));
                Cookie::queue("admin_access_token", $accessToken, (60 * 60 * 24) * 60);
            }

如您所見,我想要做的是,如果用戶是管理員,它將登錄到另一台服務器並將訪問令牌保存在 cookie 中。 我正在使用 Cookie::queue。

這是我的測試方法。

/** @test */
    public function when_login_successful_access_token_is_generated_and_stored_in_cookie_if_user_is_restaurant_admin()
    {
        $this->post(route('login'), [
            'email' => $this->restaurantAdmin->email,
            'password' => 'password'
        ])->assertRedirect();

        dd(Cookie::get('admin_access_token'));//here, coolie value is always null
    }

當我運行測試時,正如您在評論中看到的那樣,cookie 值始終為 null。 我的代碼有什么問題,我該如何解決?

我會假設 static Cookie::get()會嘗試在調用的請求生命周期中獲取 cookie。 由於在測試中沒有,cookie 將始終為 null。

有一種方法可以查看響應中是否存在 cookie,您可以使用它並查看它是否給出了預期的結果。

$this->seeCookie('admin_access_token', 'yourtoken');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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