Модульное тестирование класса сервиса symfony с помощью phpunit

У меня есть базовый класс GenericHelper.phpв каталоге Foo/BarBundle/Helper

Я зарегистрировал его как сервис в Foo /BarBundle/Resources/config/services.yml:

    parameters:
       generic_helper.class: Foo\BarBundle\Helper\GenericHelper

    services:
       generic_helper:
           class: %generic_helper.class%

и я могу получить к нему доступ с помощью команды, выполнив следующие действия:

    $helper = $this->getContainer()->get('generic_helper');

Теперь я хочу протестировать этот класс с помощью PHPUnit; У меня есть следующий код (похожий на http://symfony.com/doc/2.0/book/testing.html#unit-tests):

    namespace Foo\BarBundle\Tests\Helper;

    use Foo\BarBundle\Helper\GenericHelper;

    class GenericHelperTest extends \PHPUnit_Framework_TestCase {

        public function testSomeMethod() {
            $helper = new GenericHelper(); //line 10
            $this->assertEquals($helper->someMethod(), SOME_RESULT);
        }
    }

Запуск PHPUnit приводит к следующей ошибке:

    PHP Fatal error:  Class 'Foo\BarBundle\Helper\GenericHelper' not found in /DIR/src/Foo/BarBundle/Tests/Helper/GenericHelperTest.php on line 10

Поиск «GenericHelper» дает лишь несколько результатов:

  • сам класс и класс Test
  • файл services.yml
  • файлы appDevDebugProjectContainerв app/cache/dev/, у которых есть все сервисные геттеры

Вопрос(ы):

  • Препятствует ли Symfony PHPUnit напрямую создавать сервисный класс?
  • Есть ли способ сделать это без создания контейнера Symfony с последующим доступом к сервису (как сделано здесь: Доступ к контейнеру Symfony 2 через модульный тест?)? Я имею в виду, что это все еще просто базовый класс...

9
задан Community 23 May 2017 в 11:53
поделиться