Symfony2 FOS RestBundle测试

时间:2013-10-16 13:14:18

标签: php symfony testing fosrestbundle

我正在尝试为使用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,而是尝试加载模板。

1 个答案:

答案 0 :(得分:3)

您应该使用$server方法的$client-request()参数将Accept标头设置为application/jsonFOSRestBundle只有在收到相应的JSON标题时才会返回Accept,否则会搜索与控制器对应的模板。

$client->request('GET', '/account', array(), array(), array('HTTP_ACCEPT' => 'application/json'));