public function testTapsBeforeAndAfter()
{
$calls = [];
$m = function ($handler) use(&$calls) {
return function ($request, $options) use($handler, &$calls) {
$calls[] = '2';
return $handler($request, $options);
};
};
$m2 = Middleware::tap(function (RequestInterface $request, array $options) use(&$calls) {
$calls[] = '1';
}, function (RequestInterface $request, array $options, PromiseInterface $p) use(&$calls) {
$calls[] = '3';
});
$h = new MockHandler([new Response()]);
$b = new HandlerStack($h);
$b->push($m2);
$b->push($m);
$comp = $b->resolve();
$p = $comp(new Request('GET', 'http://foo.com'), []);
$this->assertEquals('123', implode('', $calls));
$this->assertInstanceOf(PromiseInterface::class, $p);
$this->assertEquals(200, $p->wait()->getStatusCode());
}