前提・実現したいこと
laravelでのmodelのリレーションのUnitTestを完成させたい.
発生している問題・エラーメッセージ
Failed asserting that null is an instance of class "App\Models\Comment\Comment".
該当ソースコードの$this->assertInstanceOf(Comment::class, $post->comments);の$post->commentsの理解不足なところがあると思われますのでこちらも教えていただけると幸いです.
該当のソースコード
php
1/** @test */ 2 public function a_post_has_many_comments() 3 { 4 $user = factory(User::class)->create(); 5 $post = factory(Post::class)->create(['user_id' => $user->id]); 6 $comment = factory(Comment::class)->create(['post_id' => $post->id]); 7 8 $this->assertTrue($post->comments->contains($comment)); 9 $this->assertEquals(1, $post->comments->count()); 10 $this->assertInstanceOf(Comment::class, $post->comments); 11 }
試したこと
下記のサイトを参考にUnitTestを作成しましたが,assert文の3行目のインスタンスの比較で,'Illuminate\Database\Eloquent\Collection'ではなく,明確なクラスを比較しようと検討し,Commentクラス,Postクラスで比較しましたが上記のエラーが出ました.
https://medium.com/@tonyfrenzy/part-2-testing-model-relationships-in-laravel-basic-8b606dd36c02
あなたの回答
tips
プレビュー