我有一些控制器代码会返回包含Excel文件的StreamedResponse
。
我的behat测试正在使用Symfony2Extension
及其BrowserKitDriver
而不是基于浏览器的驱动程序运行。
我有一个看起来像这样的场景:
Scenario: Download link visible and returns success code
When I am on the report page
And I follow "Download report"
Then the response status code should be 200
"下载报告" link返回一个StreamedResponse
的控制器。在这个简单的测试中,我对响应的内容不感兴趣,只是生成它时没有错误。
以上场景运行并通过!但是,在And I follow "Download report"
步骤之前(无论是使用标准格式化程序还是progress
步骤),behat输出30行左右的二进制"垃圾"到屏幕,可能是流式响应的一部分(或全部)。
鉴于这种情况正在消失,我只是想摆脱"垃圾"输出。这可能吗?
有一个类似的SO问题here,但它使用PHP的get_headers
方法,假设我有一个要浏览的网址 - 事实并非如此据我所知,Symfony驱动程序实际上并没有发出HTTP请求。
在另一个项目中,我通过添加BinaryFileResponse
而返回BinaryFileResponse::trustXSendfileTypeHeader();
和"outsourced" the streaming to nginx但是我想知道是否有办法使用正常的StreamedResponse
代替。
答案 0 :(得分:1)
我使用稍微修改过的“当我按下按钮时”步骤来处理流响应来清理控制台输出
/**
* @When /^(?:|I )press "(?P<button>(?:[^"]|\\")*)" handling a streamedresponse$/
*
* @throws
*/
public function pressButtonWithStreamedResponse($button)
{
ob_start();
$button = $this->fixStepArgument($button);
$this->getSession()->getPage()->pressButton($button);
return ob_get_clean();
}