Тестирование вашей функции плюс curl плюс сервер - это больше интеграционный тест, чем модульный тест. При этом, вам не нужно быть таким догматичным, если у вас есть только один такой тест, это, безусловно, жизнеспособно. Я написал и все еще имею тесты, которые не являются чистыми модульными тестами, но они делают свою работу. Я буду держать их так далеко, чтобы они не мешали мне.
Единственное, что меня беспокоит, это время ожидания в пять секунд, которое очень много для юнит-теста. Теперь это зависит от того, как часто это происходит. Рассматривали ли вы базовый тест (например, pinging на сервере) перед запуском curl, чтобы избежать запуска ненужного теста.
Если вы ищете альтернативы, как насчет разделения вашего теста на две части: 1 / test, как вызывается curl; 2 / проверить, что ваша функция делает с результатом? Таким образом, вы будете изолированы от сервера и вам не понадобится тайм-аут.