Php Symfony2光纤束测试

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'); 当我从浏览器运行请求时

我正在尝试为一个RESTAPI编写一些功能测试,它是使用FOS REST包创建的。 问题是,当我使用Symfony\Component\BrowserKit时,Symfony抛出以下错误: {“message”:“找不到模板\”AccountBundle:Account: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,而是尝试加载模板。

您应该使用
$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');