Я модульно тестирую служебную библиотеку (нашей собственной разработки), которая делает вызовы внешнего REST API с помощью \Друпал::httpClient()
Итак, у меня есть класс библиотеки со статическими функциями:
класс myUtils {
общедоступная статическая функция getFromApi($path)
{
...
$response = \Drupal::httpClient()->request( ... );
...
}
...
}
и я хочу вызвать это из тестового класса:
класс myUtilsTest расширяет \Codeception\Test\Unit
{
// Много чего еще...
публичная функция testGetFromApi()
{
// Делаем какую-то магию издевательства
...
myUtils::getFromApi('/some/test/path');
...
}
}
Я понимаю, что могу сделать \GuzzleHttp\Handler\MockHandler
и настроить его так, чтобы он возвращал все, что я хочу, но как мне настроить его на «перезапись» вызова \Drupal->httpClient()
?
Я видел несколько примеров, которые, кажется, предполагают, что у вас есть экземпляр класса, который имеет свой собственный HTTP-клиент
член, и это легко издеваться - но в моем случае использования вообще нет причин проектировать утилиты таким образом. Итак, как мне издеваться над Глобальный \Друпал::httpClient()
в таком случае?
Заранее спасибо за любой ответ.