• Как правильно тестировать api?

    В данном случае я обычно использую тестовую sqlite in memory базу, в phpunit.xml добавив:

    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>


    После в тесте всегда сбрасывать и накатывать данные в БД при каждом запуске:

    use RefreshDatabase;

    Дальше используя фабрики создаем записи в тестовой БД. Как пример:

    $task = factory(\App\Task::class)->create([
         'archive' => false
    ]);


    Отправляем запрос на наш URL (у Вас это будет /api/post). Опять таки для примера:

    $response = $this->get('/current_tasks');

    И в результате проверяем нужные данные, например, что ответ от сервера пришел со статусом 200 и что результатом должен быть ответ в формате JSON и именно те данные, которые мы ранее поместили в тестовую БД:

    $response->assertStatus(200)
              ->assertJson([$task->toArray()]);


    Здесь подробнее посмотрите про все ассерты: https://laravel.com/docs/5.6/http-tests
    Ответ написан
    5 комментариев