У меня есть класс, который расширяет GuzzleClient
. В его конструкторе я создаю экземпляр и передаю стек обработчика родительскому классу, который включает CurlHandler
и некоторое промежуточное ПО для повторных попыток, чтобы решить, когда повторять запросы.
public class MyClient extends GuzzleClient {
public function __construct(...)
{
$config = ...
$handlerStack = HandlerStack::create(new CurlHandler);
$retryMiddleware = Middleware::retry($this->retryDecider(), $this->retryDelay());
$handlerStack->push($retryMiddleware);
$config['handler'] = $handlerStack;
parent::__construct($config)
}
...
}
В моих модульных тестах я хочу протестировать мой метод retryDecider
путем насмешки ответа 504 для запуска retryDecider, но у меня возникли проблемы с этим:
public function testRetryDecider()
{
$client = new MyClient(...);
$mock = new MockHandler([
new Response(504),
new Response(200)
]);
// new mock handlerstack
$mockStack = HandlerStack::create($mock);
$handler = $client->getConfig('handler');
// QUESTION: how do I add my Mock Handler to my client so that it receives a 504 response, and triggers my retryDecider method?