概要
- laravelのUnitテストにて作成した独自のクラスにsetUp関数を使って継承元の関数をオーバーライドしようとしたときにエラーが出たのでまとめる。
エラーまでの経緯
-
下記のように独自のテストクラスにsetUp()関数を記載した。(継承元のsetUp()も実行しないと行けない。)
FooTest.phppublic function setUp() { parent::setUp(); // その他のテスト実行時の初期処理 }
エラー
当該テストクラス名::setUp() must be compatible with テスト継承元クラス名::setUp(): void in 当該テストクラス名
解決までの経緯
-
エラーを見るとどうやら当該テストクラスで定義しているsetUp()関数は返却値をタイプヒンティングで指定して上げる必要があるようだ。(継承元の関数をオーバーライドしたいなら戻り値の宣言も含めて同じ記載をしないと行けないっぽい)
-
下記の様に記載したらエラーは解消した。
FooTest.phppublic function setUp(): void { parent::setUp(); // その他のテスト実行時の初期処理 }