1

我正在尝试为使用 FOS Rest Bundle 创建的 REST API 编写一些功能测试。问题是当我使用 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,而是尝试加载模板。

4

1 回答 1

4

您应该使用方法的$server参数$client-request()Accept标头设置为application/json. FOSRestBundle有一个监听器,JSON只有Accept收到对应的header才返回,否则会搜索controller对应的模板。

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

于 2013-10-16T13:32:03.533 回答