Как перебрать связь морф со многими для тестирования в phpunit с использованием assertJsonFragment? - PullRequest
0 голосов
/ 24 января 2020

У меня есть куча сообщений, которые я выводю с загруженными комментариями

PostController

public function index()
{
    $posts = Post::with(['comments])->paginate(2);
    return PostResource::collection($posts);
}

Что я хотел бы сделать, это проверить, чтобы увидеть если каждый пост содержит комментарии content.

Вот мой тест на данный момент:

PostFeatureTest. php

/** @test */
public function a_user_can_see_their_posts_with_comments()
{
    $this->withoutExceptionHandling();
    $this->actingAs($creator = factory('App\User')->create());

    $posts = factory('App\Post', 10)->create(['user_id' => $creator->id]);

    foreach($posts as $post){
        $comment = factory('App\Comment',1)->create([
            "commentable_id" => $post->id,
            "commentable_type" => "App\\Post",
        ]);
    }

    $response = $this->json('GET', '/api/posts/')
        ->assertStatus(200);

    $response->assertJsonStructure([
        'data' => [
            '*' => [
                'title',
                'comments' => [
                    '*' => [
                        'content',
                        'owner'
                    ]
                ]
            ]
        ]
    ]);

    foreach($posts as $post){
        $response->assertJsonFragment(['title' => $post->title);
    }
}

Что я надену не знаю, как это сделать, это перебрать комментарии к сообщениям, чтобы проверить, есть ли в каждом комментарии содержимое assertJsonFragment:

foreach($posts as $post){
    $response->assertJsonFragment(['title' => $post->title]);

    foreach($post->comments as $comment){
        $response->assertJsonFragment(['content' => $comment->content]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...