@kaxa3201

Как писать phpunit тесты Api в laravel?

Есть метод в контроллере,подскажи пожалуйста как написать тест для него, не могу понять с чего начать и что должно получиться в итоге, прошу объяснить на моем примере.
public function addResource(Request $request)
    {
        $url = $request->input('url');
        $result = $this->service->saveContent($url);

        if ($result !== null) {
            return response()->json(['status' => 'ok', 'message' => 'Ресурс добавлен', 'data' => $result]);
        }

        return response()->json(['status' => 'error', 'message' => 'Ошибка', 'data' => ['url' => $url]]);
    }


А вот с чего я начал, а дальше ступор
public function testBasicExample()
    {
        $response = $this->json('POST', '/api/resource', ['name' => 'saveContent']);
        $service = $this->createMock(Request::class);
        
        $contentController = new ContentController($service);
       
    }
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562
I'm cool!
1) Тебе надо протестировать запросы к api, в этом случае просто чекаешь response примерно так
$response = $this->post('/api/upload');
        $response
            ->assertStatus(200)
            ->assertExactJson([
                'code' => 200,
                'output' => [],
            ]);
        ;


Вот тут смотри пример

2) Так же надо проверить addResourse, там сложнее, надо создать мок request-а и добавить туда только нужные параметры, у тебя это url. Проверить надо разные url: пустой, не корректный, корректный и т.д.

После вызова так же проверяем assert-ом Json, а так же сохраняется файл или нет.

Вот тут смотри примеры:
- загрузка файлов
- работа с Request-ом

Разумеется есть еще оф. справка, но думаю ты там уже смотрел.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы