LSONvel Testing Collection JSON Response с assertJson - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу написать тест для создания пользователя, а затем проверить, отображается ли пользователь в коллекции индексов API пользователя с использованием маршрута.

Я прочитал документацию при написании тестов API REST с помощью Laravel и PHPUnit.Я с трудом заставляю проходить assertJson, так как он возвращает следующую ошибку:

Failed asserting that an array has the subset Array &0 (
    'name' => 'Buck Trantow V'
    'email' => 'marianne.leffler@example.org'
    'username' => 'hhudson'
).
--- Expected
+++ Actual
@@ @@
     array (
     ),
   ),
-  'name' => 'Buck Trantow V',
-  'email' => 'marianne.leffler@example.org',
-  'username' => 'hhudson',
 )

Test:

public function testUserIndex()
    {
        $user = factory(User::class)->create();

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

        $response
            ->assertJson([
                'name'     => $user->name,
                'email'    => $user->email,
                'username' => $user->username,
            ]);
    }

Route / User Controller:

Route::resource('users', 'UserController');

UserController:

public function index()
    {
        return User::all();
    }

1 Ответ

0 голосов
/ 27 ноября 2018

Публикация здесь для всех, кому это нужно. Я обнаружил, что assertJsonFragment работает для этого сценария.

      $response
            ->assertJsonFragment([
                'name'     => $user->name,
                'email'    => $user->email,
                'username' => $user->username,
            ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...