Guzzle (v6) 용 히스토리 미들웨어에서 업로드 된 파일에 액세스하려고합니다.Guzzle : 히스토리 미들웨어에 업로드 된 파일에 액세스하십시오.
실제 코드가 요청을 수신 했으므로 (예 : ServerRequestInterface
을 사용), Guzzle을 사용하여 요청을 다른 곳으로 보냅니다.
이 레이어를 통해 업로드 된 파일을 테스트하려고하는데 Guzzle의 미들웨어에서 반환 한 요청 개체에서 액세스 할 수 없습니다.
예제 코드 : 당신이 어떤 시점에서 실행 체인, $client->send($request)
를 수행하면
<?php
use GuzzleHttp\Client;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\Psr7\ServerRequest;
use GuzzleHttp\Psr7\UploadedFile;
class DoNotCommitTest extends \PHPUnit\Framework\TestCase
{
public function testUploads()
{
$request = new ServerRequest('GET', 'http://example.com/bla');
$file = new UploadedFile('test', 100, \UPLOAD_ERR_OK);
$request = $request->withUploadedFiles([$file]);
$this->assertCount(1, $request->getUploadedFiles());
// Mock Guzzle request, assert on the request it 'sent'
$mock = new MockHandler([
function (ServerRequest $request, array $options) {
// This fails...
$this->assertCount(1, $request->getUploadedFiles());
}
]);
$historyContainer = [];
$history = Middleware::history($historyContainer);
$handler = HandlerStack::create($mock);
$handler->push($history);
$client = new Client(['handler' => $handler]);
$client->send($request);
}
}
감사합니다. 나는 며칠 동안 떨어져 있었고 지금 막 문제를 열려고하고있었습니다. Guzzle의 PSR7 라이브러리에 버그가있는 것 같아요, 내가 잘못 사용했다고 걱정했는데. 나는 이것을 인정 된 대답으로 표시 할 것이고, 당신은 분명히 현상금을받을 자격이있다. – giggsey