测试 Guzzle 6 下载进度
Testing Guzzle 6 Download Progress
我在测试期间无法触发 'progress' 回调。
这里是要测试的代码:
$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);
},
]);
我能够模拟响应并保存文件,但它永远不会触发 'progress'。注意:我使用的响应选项与我从实时服务器获得的响应选项相同。
$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()]);
我正在考虑只测试模拟文件下载,然后单独测试 downloadProgress
方法(如果那是我唯一的选择)。
MockHandler 没有实现 'progress' 请求选项。
测试处理程序触发进度回调的能力将是 Guzzle 测试套件的重复。具体来说:
如果您的目标是进行测试以确保回调执行预期的操作,请将其分成不同的测试。
如果您的目标是测试处理程序能力,建议您使用 Guzzle 测试套件。
CurlFactory 是非 Windows 系统的默认处理程序。
StreamHandler 是 Windows 系统的默认处理程序。
我在测试期间无法触发 'progress' 回调。
这里是要测试的代码:
$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);
},
]);
我能够模拟响应并保存文件,但它永远不会触发 'progress'。注意:我使用的响应选项与我从实时服务器获得的响应选项相同。
$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()]);
我正在考虑只测试模拟文件下载,然后单独测试 downloadProgress
方法(如果那是我唯一的选择)。
MockHandler 没有实现 'progress' 请求选项。
测试处理程序触发进度回调的能力将是 Guzzle 测试套件的重复。具体来说:
如果您的目标是进行测试以确保回调执行预期的操作,请将其分成不同的测试。
如果您的目标是测试处理程序能力,建议您使用 Guzzle 测试套件。
CurlFactory 是非 Windows 系统的默认处理程序。
StreamHandler 是 Windows 系统的默认处理程序。