Как проверить конечные точки API паспорта Laravel - PullRequest
0 голосов
/ 25 апреля 2019

Итак, я хочу провести модульное тестирование моих конечных точек API.Я использую Laravel 5.8, и проверка подлинности API выполняется с помощью Passport. У меня есть следующий тест:

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

    $response = $this->json('POST', 'api/login', [
        'email' => $user->email,
        'password' => 'secret',
    ]);

    $response
        ->assertStatus(200)
        ->assertJson([
            'success' => true,
        ]);
}

, когда я выполняю запрос с помощью Postman, он работает хорошо, аутентифицирует пользователя и возвращает токен, но когда я запускаюпроверить, не удалось («Ожидаемый код состояния 200, но получен 500».)

Итак, я нашел немного более глубокий ответ и обнаружил:

«message»: «Клиент личного доступа не найден. Пожалуйста, создайте его. "

не знаю, почему это происходит, если у кого-то есть понимание этого

РЕДАКТИРОВАТЬ : исправлено, см. Мойпоследний ответ ниже

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

просто чтобы прояснить для того, у кого такая же проблема, проблема была в том, что тот факт, что я использую базу данных памяти для тестирования, сбрасывается каждый раз, когда вы запускаете тесты, поэтому, конечно, ключи паспорта также стираются, этопочему добавление \Artisan::call('passport:install'); в начале теста устраняет эту проблему.

0 голосов
/ 25 апреля 2019

Вы видите эту ошибку, потому что вы не создали ни одного клиента паспорта.Во-первых, убедитесь, что вы правильно установили паспорт.Затем выполните следующую команду в корневом каталоге вашего проекта, чтобы создать access client;

php artisan passport:install

...