[Laravel] PHPUnitにおけるFeatureテストについて
LaravelにてPHPUnitを使用しFeatureテストを実装する際、ログイン中のユーザー情報が参照できず、
Expected status code 200 but received 500.
というメッセージが出てしまいました。
発生している問題・エラーメッセージ
テスト実行時のターミナル上のエラーメッセージ
Expected status code 200 but received 500.
laravel.logの中では" Trying to get property of non-object"と出ており、
該当するview内のコードは以下になります。
<td class="col-xs-1"><img src="{{ $article->user->avatar }}" class="avatar-img"></td>
これはarticleテーブルにリレーションされたuserテーブルからプロフィール画像(avatar)を参照するコードになっています、
試したこと
- 該当コードの部分を消去するとうまくいきます。
- 該当コードのavatarをidなどに変えてもうまくいきません。
- 他にリレーションしている、例えばcategoryテーブルなどを使って"$article->category->name"などとするとうまくいきます。
よって、ログイン状態に問題があるのかなと予想しています。
以下、Testコードになります。
<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { /** * A basic test example. * * @test * @return void */ public function indexTest() { $user = factory(User::class)->create(); $response = $this->actingAs($user); $response -> get('/article') ->assertStatus(200); } 以下略
UserFactory.php
<?php use Faker\Generator as Faker; $factory->define(App\Models\User::class, function (Faker $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'slack_user_id' => $faker->text(9), 'avatar' => $faker->imageUrl(), ]; });
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/21 06:52