pvilchez
pvilchez

Reputation: 181

Unit testing a symfony service class with phpunit

I have a basic class GenericHelper.php in directory Foo/BarBundle/Helper

I registered it as a service in Foo/BarBundle/Resources/config/services.yml:

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

    services:
       generic_helper:
           class: %generic_helper.class%

and I'm able to access it in a command by doing the following:

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

Now, I'd like to unit test that class with PHPUnit; I have the following code (similar to 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);
        }
    }

Running PHPUnit results in the following error:

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

Grepping for 'GenericHelper' only yields a few results:

Question(s):

Upvotes: 9

Views: 7783

Answers (1)

pvilchez
pvilchez

Reputation: 181

Running phpunit with the -c flag pointing to the directory containing the phpunit.xml.dist file solved the issue. Doing this includes bootstrap.php.cache and therefore the autoloading stuff necessary.

Upvotes: 9

Related Questions