У меня есть API, встроенный в Symfony, использующий FOSRestBundle.
Я хочу написать простой тест, чтобы проверить, правильно ли обрабатываются ли при отправке 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;
}
Задача ещё не решена.
Других решений пока нет …