2016-06-22 19 views
1

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.

Antwort

1

Die MockHandler implementiert die Option 'Fortschritt' nicht.

Das Testen der Fähigkeit des Handlers, den Fortschrittsrückruf auszulösen, wäre eine Duplizierung der Guzzle-Testsuite. Spezifisch:

  1. CurlFactoryTest::testEmitsProgress; und
  2. StreamHandlerTest::testEmitsProgressInformation

Wenn Ihr Ziel zu testen, um sicherzustellen, dass der Rückruf beabsichtigte Operationen durchführt, trennen, dass in einen anderen Test.

Wenn Ihr Ziel ist, Handler-Fähigkeit zu testen, verweise ich Sie auf die Guzzle Test Suite.

CurlFactory ist der Standardhandler für Nicht-Windows-Systeme.

StreamHandler ist der Standardhandler für Windows-Systeme.

+0

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