@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);
       
    }
  • Вопрос задан
  • 2228 просмотров
Пригласить эксперта
Ответы на вопрос 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-ом

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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект