简体   繁体   中英

How to test Symfony standalone bundle

I have developped some bundles ie https://github.com/975L/EmailBundle and I want to add tests for them. So, I have created the file Tests/Service/EmailServiceTest.php that contains one test.

I have installed phpunit using sudo apt install phpunit on my Ubuntu computer, but when I cd to my bundle's folder and run phpunit I have the following error:

1) c975L\\EmailBundle\\Tests\\Service\\EmailServiceTest::testCreateEmailObject Error: Class 'c975L\\EmailBundle\\Service\\EmailService' not found

It looks like the autoload can't find the class, even if declared at the top with use .

I saw some solutions over the web that requires to create a bootstrap.php with autoload but even with this, it doesn't work...

So my question is how do we test a standalone Symfony Bundle with phpunit?

It is a good idea to install phpunit on a per project basis, as version differences could come up if you have multiple projects.

(1) composer require phpunit/phpunit --dev

I saw some solutions over the web that requires to create a bootstrap.php with autoload but even with this, it doesn't work...

You can use composer's autoloader as a bootstrap. A custom bootstrap might come in handy in some cases, but not necessary.

(2) Create a phpunit.xml.dist file, something like this (your current one does not specify a bootstrap):

<?xml version="1.0" encoding="UTF-8"?>

<phpunit bootstrap="./vendor/autoload.php">
<testsuites>
    <testsuite name="MyBundle test suite">
        <directory suffix="Test.php">./Tests</directory>
    </testsuite>
</testsuites>

<filter>
    <whitelist>
        <directory>./</directory>
        <exclude>
            <directory>./Resources</directory>
            <directory>./Tests</directory>
            <directory>./vendor</directory>
        </exclude>
    </whitelist>
</filter>
</phpunit>

Also check out vendor/bin/phpunit --generate-configuration which is nice.

(3) Run vendor/bin/phpunit

It should find the config file automatically, but you can also specify it with the --configuration option

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM