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:
- the Class itself and the Test class
- the services.yml file
appDevDebugProjectContainerfiles inapp/cache/dev/, which have all the service getters
Question(s):
- Does Symfony prevent PHPUnit from directly constructing a service class?
- Is there a way to do this without creating a Symfony Container then accessing the service (as done here: Access Symfony 2 container via Unit test?)? I mean, it's still just a basic class...
phpunit.xmlfile?phpunit.xml.distfile that came with symfony, but your comment helped me out regardless - running phpunit with-c app/(directory with the dist file) worked. I guess it has to do with the specified bootstrap file within? Anyways, thanks!bootstrap.php.cachewill include the autoloading stuff. You should post an answer to your question and accept it when you will can (I think you must wait something like two days).