Скачивание файла с помощью BrowserKit / Mink - PullRequest
0 голосов
/ 04 июня 2019

Предисловие

Используя 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]
    );
}

Предыдущий код успешно отправляет запрос, но не сохраняет файл.Как мне этого добиться?

1 Ответ

0 голосов
/ 04 июня 2019

Я бы скачал файл с использованием Guzzle или curl. Mink используется и предназначен для взаимодействия со страницами, и, насколько мне известно и быстрый взгляд на его документы, не поддерживает функциональность, к которой вы стремитесь.

...