Где поставить тесты, тестирующие конфигурацию в файлах YAML

Какой серверный язык вы используете? В моем приложении я могу легко загрузить файл из вызова AJAX, установив правильные заголовки в ответе PHP:

Настройка заголовков на стороне сервера

header("HTTP/1.1 200 OK");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

// The optional second 'replace' parameter indicates whether the header
// should replace a previous similar header, or add a second header of
// the same type. By default it will replace, but if you pass in FALSE
// as the second argument you can force multiple headers of the same type.
header("Cache-Control: private", false);

header("Content-type: " . $mimeType);

// $strFileName is, of course, the filename of the file being downloaded. 
// This won't have to be the same name as the actual file.
header("Content-Disposition: attachment; filename=\"{$strFileName}\""); 

header("Content-Transfer-Encoding: binary");
header("Content-Length: " . mb_strlen($strFile));

// $strFile is a binary representation of the file that is being downloaded.
echo $strFile;

Это будет фактически «перенаправление 'браузер на эту страницу загрузки, но, как сказал @ahren alread в своем комментарии, он не будет перемещаться от текущей страницы.

Все дело в настройке правильных заголовков, поэтому я уверен,

Обращение с клиентской стороной ответа

Предполагая, что вы уже знаете, как сделать вызов AJAX, вы можете найти подходящее решение для серверного языка, который вы используете, если это не PHP. на стороне клиента вы выполняете запрос AJAX на сервер. Затем сервер генерирует ссылку, с которой можно загрузить этот файл, например. URL 'forward', на который вы хотите указать. Например, сервер отвечает:

{
    status: 1, // ok
    // unique one-time download token, not required of course
    message: 'http://yourwebsite.com/getdownload/ska08912dsa'
}

При обработке ответа вы вводите iframe в своем теле и устанавливаете SRC iframe в URL, который вы только что получили (например, используя jQuery для удобства этого примера):

$("body").append("<iframe src='" + data.message +
  "' style='display: none;' ></iframe>");

Если вы установили правильные заголовки, как показано выше, iframe заставит диалоговое окно загрузки, не переведя браузер с текущей страницы.

Примечание

Дополнительное дополнение по отношению к вашему вопросу; Я думаю, что лучше всегда возвращать JSON при запросе материала с помощью технологии AJAX. После того, как вы получили ответ JSON, вы можете решить, на какой стороне клиент, что с ним делать. Возможно, например, в дальнейшем вы хотите, чтобы пользователь нажал ссылку для загрузки на URL, а не на прямое скачивание, в вашей текущей настройке вам нужно будет обновить как клиент, так и серверную сторону, чтобы сделать это.

3
задан cezar 22 February 2019 в 16:42
поделиться

1 ответ

Хорошая практика - помещать тестовые файлы в ту же архитектуру, что и ваш src, но это не значит, что вы не можете писать другие тестовые файлы.
Если у вас нет контроллера, поместите его непосредственно в тесты и назовите его так, как вы хотите (FirewallTest?)

Я лично использую специальный функциональный тест, который проверяет различные маршруты для разных ролей и проверяет только то, получаю ли я 403/200.

Как вы можете видеть здесь в документации , они помещают свои файлы непосредственно в тесты: tests/ApplicationAvailabilityFunctionalTest.php

0
ответ дан goto 22 February 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: