LoginSignup
2
0

More than 1 year has passed since last update.

【備忘録(エラー解消)】"App\Http\Controllers\Request" does not exist

Last updated at Posted at 2023-02-25

この記事の目的

  • laravel9にてstoreメソッドのテスト実行時に出たエラーについての備忘録

エラー

エラー内容

Class "App\Http\Controllers\Request" does not exist

エラー原因

  • 簡潔にいうとエラーで表示された内容通りApp\Http\Controllers\Requestが通っていないということ。
  • storeメソッドの引数を勝手に変更してしまったこと

詳細

laravel9でプロジェクトを作成しコントローラー等を作成した後にデフォルトのstoreメソッドを参考にしていたサイトと同じように下記のような変更を行なってしまっていた

public function store(StoreTaskRequest $request)
public function store(Request $request)

これによってuse App\Http\Requests\StoreTaskRequest;が記載されたいたものが使用されなくなり
わざわざuse App\Http\Controllers\Requestを記載しなければいけない状態にしてしまっていた。

エラー対応

  • 対応もそもそも必要なくpublic function store(StoreTaskRequest $request)を使用すれば良いだけ.
  • public function store(Request $request)するならuse Illuminate\Http\Request;を追加する
    参考しているののもバージョン等が違うことやなぜ記載が異なるのかを考えてなく脳死で作業していたことがいけなかった、、戒め

エラーが出た経緯(一応)

作成したstoreメソッドのunitテストを実行したら上記のエラーが表示された

①storeメソッド

処理はシンプルにリクエストで送られた情報の登録

app/Http/Controllers/TaskController.php
    /**
     * @param  Request  $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(Request $request)
    {
        $task = Task::create($request->all());

        return $task
            ? response()->json($task, 201)
            : response()->json([], 500);
    }

②テストコード

tests/Feature/TaskTest.php
    /**
     * @test
     */
    public function 登録テスト()
    {
        // 登録するデータの作成
        $data = [
            'title' => 'テスト投稿'
        ];
        // storeメソッドはpostで受け取るためpostJsonとし第2引数にデータを指定する
        $response = $this->postJson('api/tasks', $data);
        dd($response->json());

        $response->assertStatus(201);
    }

③テスト実行

vendor/bin/phpunit tests/Feature/TaskTest.php --filter "登録テスト"

参考サイト

Laravel - 対象クラス [App\Http\Controllers\Request] が存在しない - 解決済み

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0