Компонент BrowserKit недоступен - PullRequest
0 голосов
/ 18 марта 2019

У меня есть тест, который расширяет WebTestCase. Это пока мало что делает:

namespace Tests\Application\EndToEnd;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class AuthenticationTest extends WebTestCase

    {
        public function testAuthenticationMethodNotAllowed()
        {   
            $client = static::createClient();
            self::assertTrue(true);
        }
    }

Но даже этого небольшого количества достаточно, чтобы вызвать ошибку при запуске теста:

Произошла 1 ошибка:

1) Тесты \ Application \ EndToEnd \ AuthenticationTest :: testAuthenticationMethodNotAllowed LogicException: вы не можете создать клиент, используемый в функциональных тестах если компонент BrowserKit недоступен. Попробуйте запустить "композитор требуется symfony / browser-kit ".

Запуск composer require symfony/browser-kit, а также composer require --dev symfony/browser-kit не решает проблему.

Я также попробовал упомянутое исправление здесь , без улучшений.

Это известная проблема? Есть ли другие подходы, которые я должен попробовать?

===

Обновление: вот содержимое моего test.xml файла:

<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <parameters>
        <parameter key="test.client.parameters" type="collection"></parameter>
    </parameters>

    <services>
        <defaults public="false" />

        <service id="test.client" class="Symfony\Bundle\FrameworkBundle\Client" shared="false" public="true">
            <argument type="service" id="kernel" />
            <argument>%test.client.parameters%</argument>
            <argument type="service" id="test.client.history" />
            <argument type="service" id="test.client.cookiejar" />
        </service>

        <service id="test.client.history" class="Symfony\Component\BrowserKit\History" shared="false" />

        <service id="test.client.cookiejar" class="Symfony\Component\BrowserKit\CookieJar" shared="false" />

        <service id="test.session.listener" class="Symfony\Component\HttpKernel\EventListener\TestSessionListener">
            <tag name="kernel.event_subscriber" />
            <argument type="service_locator">
                <argument key="session" type="service" id="session" on-invalid="ignore" />
            </argument>
        </service>

        <service id="test.service_container" class="Symfony\Bundle\FrameworkBundle\Test\TestContainer" public="true">
            <argument type="service" id="kernel" />
            <argument>test.private_services_locator</argument>
        </service>

        <service id="test.private_services_locator" class="Symfony\Component\DependencyInjection\ServiceLocator" public="true">
            <argument type="collection" />
        </service>
    </services>
</container>

1 Ответ

1 голос
/ 18 марта 2019

Это сообщение об ошибке выдается не только тогда, когда компонент BrowserKit не установлен, но и когда параметр конфигурации framework.test не равен true (так как в этом случае служба test.client никогда не будет зарегистрирована).

Вам необходимо убедиться, что эта опция включена и что ваш тест фактически выполняется в среде test.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...