Symfony测试端点正确使用JSON

时间:2015-01-09 14:22:59

标签: php json rest symfony fosrestbundle

我使用FOSRestBundle在Symfony中构建了一个API。

我想编写一个简单的测试来验证当我提交一些JSON时,结果是否得到了正确处理并且返回了预期的响应。

工作测试代码

$user = $this->getResourceContent('userValid.json');
$this->client->request('POST', '/users', json_decode($user, true), [], $this->headers);

我可以通过提供'用户'作为表单POST值来获取成功提交的请求。然而,这不是我试图测试的行为。

测试用例失败

$user = $this->getResourceContent('userValid.json');
$this->client->request('POST', '/users', [], [], $this->headers, $user);

这是我想要测试的,提供JSON作为请求主体,以便可以处理它。但是这不起作用,因为$form->isValid()检查失败,因为表单尚未提交。

控制器操作

public function postUserAction(Request $request)
{
    $user = new User();
    $form = $this->createForm(new UserType(), $user, ['method' => 'POST']);
    $form->handleRequest($request);

    if ($form->isValid()) {

        // TODO: Persist user

        $view = $this->jsendView(['user' => $user], 201, Jsend::SUCCESS);
        $view->getSerializationContext()->setGroups(['Default', 'private']);
        return $view;
    }

    return $form;
}

0 个答案:

没有答案