Php Symfony2光纤束测试
我正在尝试为一个RESTAPI编写一些功能测试,它是使用FOS REST包创建的。 问题是,当我使用Symfony\Component\BrowserKit时,Symfony抛出以下错误: {“message”:“找不到模板\”AccountBundle:Account:list.html.twig\”..} 我运行的代码是:Php Symfony2光纤束测试,php,symfony,testing,fosrestbundle,Php,Symfony,Testing,Fosrestbundle,我正在尝试为一个RESTAPI编写一些功能测试,它是使用FOS REST包创建的。 问题是,当我使用Symfony\Component\BrowserKit时,Symfony抛出以下错误: {“message”:“找不到模板\”AccountBundle:Account:list.html.twig\”..} 我运行的代码是: $client = static::createClient(); $client->request('GET','/account'); 当我从浏览器运行请求时
$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,而是尝试加载模板。您应该使用
$client-request()的$server
参数
将Accept
头设置为application/json
FOSRestBundle
的方法有一个侦听器,只有在收到相应的Accept
头时,该侦听器才会返回json
,否则它将搜索与控制器对应的模板
$client->request('GET','/account',array(),array(),array('HTTP_ACCEPT'=>'application/json');
您应该使用$client-request()的$server
参数
将Accept
头设置为application/json
FOSRestBundle
的方法有一个侦听器,只有在收到相应的Accept
头时,该侦听器才会返回json
,否则它将搜索与控制器对应的模板
$client->request('GET','/account',array(),array(),array('HTTP_ACCEPT'=>'application/json');