我正在尝试为使用FOS Rest Bundle创建的REST API编写一些功能测试。 问题是当我使用Symfony \ Component \ BrowserKit时,symfony会抛出以下错误: {“message”:“无法找到模板”AccountBundle:帐户:list.html.twig \“.. ..}
我运行的代码是:
$client = static::createClient();
$client->request('GET','/account');
当我从浏览器运行请求时,它可以正常工作。
这是控制器:
/**
* Get channel by ID
* @Secure(roles="ROLE_USER")
* @RestView()
* @ApiDoc(
* resource=true,
* description="Get channel by id",
* section="Channel",
* output="Channel"
* )
*/
public function getAction(Channel $channel)
{
return array('channel' => $channel);
}
因此,在测试场景中,不是返回JSON,而是尝试加载模板。
答案 0 :(得分:3)
您应该使用$server
方法的$client-request()
参数将Accept
标头设置为application/json
。 FOSRestBundle
只有在收到相应的JSON
标题时才会返回Accept
,否则会搜索与控制器对应的模板。
$client->request('GET', '/account', array(), array(), array('HTTP_ACCEPT' => 'application/json'));