本文へ移動
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
  • About
  • Price
  • Work
  • Blog
  • Contact
  1. ホーム
  2. Blog
  3. Laravelのテストコードでcookieをモックする方法

公開日: 2023.12.19

Laravelのテストコードでcookieをモックする方法

Laravelのテストコードでcookieをモックする方法

目次

  • はじめに
  • cookieをモックする
  • サンプルコード
  • 注意点
  • まとめ

はじめに

Laravelでテストコードを書く時、HTTPリクエストに含むcookieをモックしたい場合があると思います。そんな時ちょっとひっかかりポイントがあったのでメモ。

環境
  • Laravel 8.x
  • PHPUnit

cookieをモックする

テストコードの書き方やモックについての解説は省略しますm(_ _)m

サンプルコード

以下のようにwithCookies()メソッドを使う。

Laravel公式より抜粋
<?php

namespace TestsFeature;

use TestsTestCase;

class ExampleTest extends TestCase
{
    public function test_interacting_with_cookies()
    {
        $response = $this->withCookie('color', 'blue')->get('/');

        $response = $this->withCookies([
            'color' => 'blue',
            'name' => 'Taylor',
        ])->get('/');
    }
}
参考

Laravel 8.x HTTPテスト
https://readouble.com/laravel/8.x/ja/http-tests.html

注意点

以下のようにcookieメソッドを直接モックすることはできませんでした。

Cookie::shouldReceive('get')
            ->with('color')
            ->andReturn('blue');

あとPOSTリクエストをJSONで送る場合は、以下のようにwithCredentials()メソッドが必要。(使わないとcookieが取得できない)

$response = $this->withCredentials()
        ->withCookies([
            'color' => 'blue',
            'name' => 'Taylor',
            ])->postJson('/', [
            'key' => 'value',
        ]);

まとめ

Laravelは便利なメソッドがたくさんあって便利な反面、知らないとドツボにはまりますね(汗)

このwithCredentials()メソッドについての記述が公式で見つからなかったのですが、どこにあるんだろう???

タグ

  • cookie
  • Laravel
  • phpunit
  • withCookies
  • withCredentials
  • テストコード

関連記事

2021.09.04

Laravelで複数ファイルをZIPでまとめてストリーミングダウンロードさせる方法

Laravelで複数ファイルをZIPでまとめてストリーミングダウンロードさせる方法

2020.04.01

Laravel Mixを使ってjavascriptをコンパイルする

Laravel Mixを使ってjavascriptをコンパイルする

2021.03.10

【Laravel】バリデーションの種類と使い方

【Laravel】バリデーションの種類と使い方
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
YAS プロフィール画像

長野県長野市在住
WEBエンジニア YAS

LINKS

  • X
  • Instagram
  • GitHub
Design
  • スタンダード
  • 和モダン
  • エンジニア
  • 信州ナチュラル
プライバシーポリシー

@ Webstudio YAS