我使用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;
}