@dnevnick
junior full stack dev

Laravel ui:auth — как вернуть json?

Пытаюсь пострить spa приложение с использованием Laravel + vue
Пишу тест, делаю в тесте:
public function a_guest_can_create_an_account()
    {
          $response = $this->post('/register', [
                    'name' => 'Test',
                    'email' => 'test@test.com',
                    'password' => '1234567890',
        ]);

        $response->assertStatus(201);

Данный тест отдает статус 302, а мне бы хотелось получить 201.

Хочу, чтобы бэк ответил мне json`ом. Эта логика прописана в модуле регистрации, поставляемым "вместе" с laravel (lavavel/ui/auth-backend/RegisersUsers.php).
За регистрацию и отправку ответа отвечает следующий блок в этом модуле:
public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        if ($response = $this->registered($request, $user)) {
            return $response;
        }

        return $request->wantsJson()
                    ? new Response('', 201)
                    : redirect($this->redirectPath());
    }


Вопрос - что написать в тесте, чтобы в последнем абзаце
return $request->wantsJson()
                    ? new Response('', 201)
                    : redirect($this->redirectPath());
отрабатывала строчка "? new Response('', 201)" вместо строчки " redirect($this->redirectPath());" и я получил желаемый 201 статус в тесте?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@jazzus
С помощью json методов
$this->postJson(route('register'), $data)
     ->assertCreated();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы