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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2591閲覧

Laravelのテストでコケる

nnahito

総合スコア2004

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/07/30 14:41

環境

  • windows10
  • PHP 7.2.10
  • Laravel 5.8.30

質問

Laravelで初めてテストを書こうと、コントローラーテストを簡単に書いてみたらコケてしまいます。
しかしその原因がわかりません。

質問詳細

以下の図のように、とりあえずコントローラーのテストを作成します。

イメージ説明


コードは以下です。

<?php namespace Tests\Unit; use Tests\TestCase; class HogeControllerTest extends TestCase { public function testIndex() { $response = $this->get(action('HogeController@index')); $response->assertStatus(200); } public function testTop() { $response = $this->get(action('HogeController@top')); $response->assertStatus(200); } }

実行します。
以下、実行コマンド

"./vendor/bin/phpunit"

エラーが発生します。

PHPUnit 6.5.14 by Sebastian Bergmann and contributors. E. 2 / 2 (100%) Time: 258 ms, Memory: 12.00MB There was 1 error: 1) Tests\Unit\HogeControllerTest::testIndex ErrorException: Declaration of Illuminate\Foundation\Testing\Assert::assertArraySubset($subset, $array, bool $checkForObjectIdentity = false, string $message = ''): void should be compatible with PHPUnit\Framework\Assert::assertArra ySubset($subset, $array, $strict = false, $message = '') D:\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Assert.php:42 D:\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestResponse.php:149 D:\project\tests\Feature\HogeControllerTest.php:15 ERRORS! Tests: 2, Assertions: 1, Errors: 1.

assertArraySubsetメソッドが~~と書かれていますが、ご覧の通り、上記テストコード内ではそのメソッドを使っておりません……
しかもなぜか、testIndexメソッドでコケて、ほぼ同じコードのtestTopメソッドではコケていないという謎現象も…


以下の記事を見つけました。
https://laracasts.com/discuss/channels/testing/assertstatus-giving-errors

「古いものを使っているのではないか」とのことだったので、
「composer update」を叩いてみましたが、特に落ちてくることはなく……


以上試してみたのですが、自分ではお手上げで……
解決策をご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHPUnit 6.5.14
バージョンが低い。
Laravel5.8ならPHPUnit7.5以上。
composer.jsonを書き換えてからupdate
"phpunit/phpunit": "^7.5"

投稿2019/07/31 03:24

kawax

総合スコア10377

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

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

nnahito

2019/07/31 15:17

ありがとうございます! そうやって上げるのですね……勉強不足でした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問