Symfony PHPUnit Test (ошибка 500)

Я тестирую эту функцию

/**
* @Route("/list", name="_clients")
* @Method("GET")
*/
public function ClientsAction()
{
$em = $this->getDoctrine()->getManager();
$data = $em->getRepository('InvoiceBundle:Clients')->findByUser($this->user());
if($data){
$Clients = array();
foreach($data as $v){
if($v->getCompanyId() != 0 ) {
$companyId = $v->getCompanyId();
} else {
$companyId = '';
}

if ($v->getClient() == 'person'){
$company = $v->getName().' '.$v->getLname();
} else {
$company = $v->getCompany();
}

$Clients[] = array(
'id' => $v->getId(),
'settings' => $company,
'companyId' => $companyId,
'client' => $v->getClient(),
'mobile' => $v->getMobile(),
'email' => $v->getEmail(),
'clientName' => $v->getClientName(),
'delivery' => $v->getDelivery(),
'ContactPerson' => $v->getContactPerson()
);
}
} else {
$Clients = array('data' => 'empty');
}

$response = new JsonResponse($Clients);
return $response;
}

Сама функция работает правильно, но затем я хочу проверить, является ли мой ‘Content-Type’ Json с этой функцией

public function testClients()
{
$client = static::createClient();

$client->request('GET', '/clients/list');
$this->assertTrue(
$client->getResponse()->headers->contains(
'Content-Type',
'application/json'
)
);
}

с этим я получаю ЛОЖНОЕ значение.
Затем я пытаюсь сделать тест для кода состояния

$this->assertSame(200, $client->getResponse()->getStatusCode());

С этим я получаю ошибку 500 вместо 200 ОК
Я понимаю, что именно поэтому я получаю ЛОЖНОЕ значение в моем тесте «Content-Type», но я не могу понять, почему.
Я делаю все это в соответствии с документацией Symfony.
Может быть, я делаю что-то не так или просто вы не можете проверить ‘Content-Type’?

Любая помощь будет оценена!

2

Решение

JsonResponse добавляет заголовок Content-Type (application / json), так что это не должно быть проблемой.

Я думаю, что главная проблема в том, что вы пропали без вести $ на client->request() линия.

Редактировать :

Перед объявлением вашего класса, вы добавили @Route("/clients") ?

Или, может быть, данные, возвращаемые findByUser не то, что вы ожидали, и призывает $v потерпеть поражение.

2

Другие решения

Других решений пока нет …