un test unitaire n'est pas sensé utiliser de service externe
Si tu veux faire des "vrais" tests unitaires, c'est effectivement ce qu'il faut faire: définir le comportement de tous les appels externes, que ce soit pour des apis, mais aussi lors de l'appel de méthodes d'autres fichiers.
Exemple qui n'a aucun rapport avec ton problème pour illustrer mon propos avec des utilisateurs et historiques:
Dans un fichier user.php, on a une méthode updateUser(), qui appelle une méthode insertHistory() du fichier history.php.
Lorsque tu vas tester updateUser(), tu vas vérifier que tu as bien appelé la méthode insertHistory() avec les bon paramètres, pas qu'une nouvelle ligne a été ajoutée en base de données.
C'est d'ailleurs la même chose pour les insertions en base: tu dois vérifier que tu appelles la méthode d'insertion avec les bon paramètres, pas vérifier en base les données insérées.
Le concept de test d'intégration indique quant à lui, le fait de lancer une instance de ton service (ici ton microservice), et de vérifier qu'il a le comportement que tu souhaites (c'est plus compliqué à mettre en place). Tu testes ainsi ton service de bout en bout et pas seulement une portion de code: du point d'entrée s'il s'agit d'une api à l'insertion en base si le service en utilise une.
Je ne connais pas trop le php (j'ai quand même fait du test phpunit à une époque), ni comment est architecturé ton projet, mais je pense que phpunit peut être une solution à ton problème: tu n'es pas obligé de mocker les appels à l'api.
C'est en revanche risqué de ne pas le faire lorsque tu utilises un service externe: si pour un même appel à l'api, les résultats peuvent différer, il faudra toujours remettre à jour ton test car ton calcul final donnera forcément un résultat différent.
Donc pour moi, phpUnit si tu souhaites seulement tester tes calculs, ou un truc du style behat (à vérifier que c'est bien utilisé en php, je sais juste que son homologue cucumber en java l'est) si tu souhaites tester de bout en bout ton application.