Почему, когда я запускаю свой тест phpunit, я получаю пустой ответ, но тот же маршрут / пользователь в Postman ведет себя как положено? - PullRequest
0 голосов
/ 22 декабря 2018

Во время написания моих тестов для API маршрут api / users должен возвращать список пользователей.В Postman работает должным образом, но в моем тесте phpunit возвращает состояние 200, но пустой ответ, следовательно, assertJsonStructure () завершается неудачей.

Я использовал один и тот же пользователь / пароль для Postman и для phpUnit.Я добавил dd (), пытаясь отладить ответ и получить пустое тело.

Тест

/** @test */                                                                                                                                                  
         public function testUserCanListUsers()                                                                                                                        
         {                                                                                                                                                             
         ┆   $user = factory(User::class)->make();                                                                                                                     
         ┆   \Auth::loginUsingId($user);                                                                                                                               
         ┆   $response = $this->actingAs($user)                                                                                                                        
         ┆   ┆   ->get('api/users')                                                                                                                                    
         ┆   ┆   ->assertStatus(200);                                                                                                                                  
         |   dd($response->getContent());                                                                                                                              
         ┆   $response->assertJsonStructure([                                                                                                                          
         ┆   ┆   "id",                                                                                                                                                 
         ┆   ┆   "name",                                                                                                                                               
         ┆   ┆   "email",                                                                                                                                              
         ┆   ┆   "email_verified_at",                                                                                                                                  
         ┆   ┆   "created_at",                                                                                                                                         
         ┆   ┆   "updated_at",                                                                                                                                         
         ┆   ]);                                                                                                                                                       
         }     

Ожидаемый вывод, который я получаю на Почтальоне

[
    {
        "id": 1,
        "name": "Dr. Frederic Klein",
        "email": "vanessa.jacobi@example.org",
        "email_verified_at": "2018-10-31 20:03:52",
        "created_at": "2018-10-31 20:03:52",
        "updated_at": "2018-10-31 20:03:52"
    },
    {
        "id": 2,
        "name": "Prof. Alyce Considine",
        "email": "florence72@example.net",
        "email_verified_at": "2018-10-31 20:03:52",
        "created_at": "2018-10-31 20:03:52",
        "updated_at": "2018-10-31 20:03:52"
    },
    {
        "id": 3,
        "name": "Miss Jermaine Johns PhD",
        "email": "kenyon.stehr@example.net",
        "email_verified_at": "2018-10-31 20:03:52",
        "created_at": "2018-10-31 20:03:52",
        "updated_at": "2018-10-31 20:03:52"
    },...

Вывод я получаю на phpUnit Когда я dd ($ response);"[]"

Postman output

1 Ответ

0 голосов
/ 22 декабря 2018

Метод factory()->make() не сохраняет запись в базе данных.Поэтому, когда вы делаете свой вызов API в своем тесте, у вас нет пользователей, поэтому пустой ответ.

factory()->create() используется для фактического сохранения записи.Итак, просто измените ваш factory()->make() на factory()->create(), и вы должны получить пользователя в своем ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...