質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

3730閲覧

PHP/Laravelでのユニットテストにて、Call to a member function connection() on nullを解決したい。

ryoooos

総合スコア11

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/05/23 01:14

前提・実現したいこと

現在、PHP/Laravelにて、ユニットテストを記述しています。
setUp():を記述した部分で、タイトルのエラーが発生しました。
このエラーを解決したいです。

このエラーについて、ご存知の方がいらっしゃれば解決法を教えていただきたいと思いました。
よろしくお願い致します。

発生している問題・エラーメッセージ

Call to a member function connection() on null

該当のソースコード

php

1<?php 2 3namespace Tests\Unit; 4 5use App\Product; 6use Illuminate\Support\Facades\Auth; 7use App\Http\Middleware\VerifyCsrfToken; 8use Illuminate\Foundation\Testing\RefreshDatabase; 9use Illuminate\Foundation\Testing\WithFaker; 10use Illuminate\Http\UploadedFile; 11use PHPUnit\Framework\TestCase; 12 13class ProductTest extends TestCase 14{ 15 use RefreshDatabase; 16 private $product; 17 18 protected function setUp(): void { 19 parent::setUp(); 20 $product = Product::create([ 21 "name" => "product_sample", 22 "description" => "Lorem ipsum dolor sit amet, consectetur adipisicing elit,", 23 "pickup_times" => "pm", 24 "price" => 100, 25 "user_id" => 2, 26 "address" => "tokyo" 27 ]); 28 } 29 public function testProductNameRequire() { 30 $data = ["name" => ""]; 31 $response = $this->post("/products", $data); 32 $response->assertSessionHasErrors(["name" => "The name field is required."]); 33 } 34}

試したこと

試したこととして、海外のサイトを参考にして、setUp():内部に

parant::setUp();

を記述しましたが、エラーは変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

extendしているTestCaseがPHPUnit由来の物だからです。
DB接続などLaravelの機能を利用するテストを作成する時は、それ用に拡張されたTestCaseextendする必要があります。

具体的な解決方法は

use PHPUnit\Framework\TestCase;

use Illuminate\Foundation\Testing\TestCase

に変更するだけです。

投稿2020/10/19 10:27

ggg-mzkr

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問