Я пытаюсь написать контрольный пример для проверки моей операции по сохранению данных в базе данных с помощью Symfony 4.1.Операция уже работает, и она выглядит следующим образом:
public function storeAction(Request $request)
{
$data = json_decode($request->getContent());
try {
$entityManager = $this->getDoctrine()->getManager();
$createdAt = \DateTime::createFromFormat("Y-m-d H:i:s", $data->createdAt);
$concludedAt = \DateTime::createFromFormat("Y-m-d H:i:s", $data->concludedAt);
$task = new Task();
$task->setDescription($data->description);
$task->setCreatedAt($createdAt);
$task->setConcludedAt($concludedAt);
$entityManager->persist($task);
$entityManager->flush();
return $this->json([
"message" => "Task created",
"status" => 200
]);
} catch (\Exception $e) {
return $this->json([
"error" => [
"code" => 500,
"message" => $e->getMessage(),
"file" => $e->getFile()
]
]);
}
}
Использование Insonmnia REST с отправкой JSON работает.Но тест покажет мне
Попытка получить свойство 'createAt' необъектного
, указывающее на мой класс контроллера.Это тест:
public function testStoreTaskEndpointStatusCode200AndTaskCreated()
{
$client = static::createClient();
$client->request(
"POST",
"/tasks",
[],
[],
[
"CONTENT_TYPE" => "application/json",
'{"description": "Goodbye, world!", "createdAt": "2012-12-21 00:00:00", "concludedAt": "2012-12-21 00:00:01"}'
]
);
$obj = json_decode($client->getResponse()->getContent());
var_dump($obj); // <~ the error message is shown
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertTrue($client->getResponse()->headers->contains("Content-Type", "application/json"));
}
В документации показан этот способ отправки JSON на контроллер для тестирования.Итак, почему это терпит неудачу?