Symfony PHPUnit WebTestCase с RenderController - PullRequest
       32

Symfony PHPUnit WebTestCase с RenderController

0 голосов
/ 25 октября 2018

Я реализовал этот тест в своем приложении

public function testHome()
{
    $client = static::createClient();
    $client->request('GET', '/');
    $this->assertEquals(200, $client->getResponse()->getStatusCode());
}

Он не работает из-за контроллера рендеринга в моей ветке

{% extends 'base-pages.html.twig' %}

{% block main %}
    <main>
        {{ render(controller('App\\Controller\\AppController::futureEvents')) }}
        {{ include('includes/popular-places.html.twig') }}
        {{ include('includes/news-event.html.twig') }}
        {{ include('includes/call-section.html.twig') }}
    </main>
{% endblock %}

Контроллер визуализирован:

public function futureEvents()
{
    $events = $this->getDoctrine()->getRepository(Event::class)->findAll();

    return $this->render('includes/events-home-list.html.twig', [
        'events' => $events,
    ]);
}

Ошибка:

Произошел 1 сбой:

1) App \ Tests \ Controller \ HomeControllerTest :: testHome Не удалось подтвердить, что 500 соответствует ожидаемым 200.

/ var / www / html / app-web / tests / Controller / HomeControllerTest.php: 15

Почему это происходит?Есть ли способ обработки renderController в тестовом веб-случае?

1 Ответ

0 голосов
/ 25 октября 2018

Я нашел это.Согласно этому документу: https://symfony.com/doc/current/testing/database.html#changing-database-settings-for-functional-tests

Вы должны добавить env в раздел php в вашем phpunit.xml.dist.

<env name="DATABASE_URL" value="mysql://root:root@localhost/app" />
...