Ich habe Probleme beim Auslösen des Rückrufs während des Tests. HierTesten von Guzzle 6 Download Progress
ist der Code getestet werden:
$this->guzzleClient->request(
'GET',
'http://example.com/somefile.csv',
[
'sink' => $this->directory . $this->filename . '.csv',
'progress' => function ($download_size, $downloaded, $upload_size, $uploaded) {
$this->downloadProgress($download_size, $downloaded, $upload_size, $uploaded);
},
]);
Ich bin in der Lage, eine Antwort zu verspotten und es speichert die Datei, aber es löst nicht ‚Fortschritt‘. Hinweis: Die Antwortoptionen, die ich verwende, sind die gleichen wie die, die ich vom Live-Server bekomme.
$mock = new MockHandler([
new Response(
'206',
[
'content-type' => 'application/octet-stream',
'Content-Range' => 'bytes 1113-1113/11591523',
],
new Stream(fopen(__DIR__ . '/test_stream_file.txt', 'r'))
)
]);
$handler = HandlerStack::create($mock);
$client = new Client(['handler' => $handler()]);
Ich erwäge, dass die Pseudo-Datei-Downloads nur testen und dann die Prüfung der downloadProgress
Verfahren getrennt, wenn das meine einzige Option ist.
Letztendlich entschied ich mich, die 'downloadProgress' Methode separat zu testen. Ich hätte sie gerne zusammen getestet, da sie zusammen ausgelöst werden, aber als ich den Download-Fortschritt getestet habe, gab es mehrere Bedingungen, die ich testen musste, sodass es tatsächlich sinnvoller war, sie selbst zu testen. – jayEss