Предисловие
Используя Behat, я могу написать такой сценарий:
Scenario: I can get a template
When I send a GET request to "/products/template"
Then the response status code should be 200
, который ссылается на этот шаг Behatch, реализованный с помощью vendor/behatch/contexts/src/Context/RestContext.php
:
/**
* Sends a HTTP request
*
* @Given I send a :method request to :url
*/
public function iSendARequestTo($method, $url, PyStringNode $body = null, $files = [])
{
return $this->request->send(
$method,
$this->locatePath($url),
[],
$files,
$body !== null ? $body->getRaw() : null
);
}
Запрос
Чтобы проверить ответы файлов, я хотел бы написать такой сценарий:
Scenario: I can get a template
When I send a GET download request to "/products/template" and save it to "/tmp"
Then the response status code should be 200
And the file "/tmp/template.csv" should exist
Я хотел бы написать шаг, который отправляет запрос GET и загружает файл впредоставленный путь, похожий на функциональность сток-приемника , аналогично:
/**
* Sends a HTTP request
*
* @Given I send a :method download request to :url and save it to :path
*/
public function iSendADownloadRequestTo($method, $url, $path)
{
return $this->request->send(
$method,
$this->locatePath($url),
["sink" => __DIR__.$path]
);
}
Предыдущий код успешно отправляет запрос, но не сохраняет файл.Как мне этого добиться?