如何测试Symfony独立捆绑包

时间:2018-07-22 15:46:00

标签: php symfony phpunit

我已经开发了一些捆绑软件,例如https://github.com/975L/EmailBundle,我想为其添加测试。因此,我创建了包含一个测试的文件Tests/Service/EmailServiceTest.php

我已经在Ubuntu计算机上使用sudo apt install phpunit安装了phpunit,但是当我cd到包的文件夹中并运行phpunit时,出现以下错误:

  

1)   c975L \ EmailBundle \ Tests \ Service \ EmailServiceTest :: testCreateEmailObject   错误:找不到类'c975L \ EmailBundle \ Service \ EmailService'

即使在顶部用use声明,自动加载程序也找不到该类。

我在网络上看到了一些解决方案,这些解决方案要求创建具有自动加载功能的bootstrap.php,但是即使这样,它也无法正常工作...

所以我的问题是我们如何使用phpunit测试独立的Symfony捆绑包?

1 个答案:

答案 0 :(得分:3)

在每个项目的基础上安装phpunit是一个好主意,因为如果您有多个项目,则版本差异可能会出现。

(1)composer require phpunit/phpunit --dev

  

我在网络上看到了一些解决方案,这些解决方案要求创建具有自动加载功能的bootstrap.php,但是即使这样做,它也无法正常工作...

您可以使用作曲家的自动加载器作为引导程序。自定义引导程序在某些情况下可能会派上用场,但不是必需的。

(2)创建一个phpunit.xml.dist文件,如下所示(您当前的文件未指定引导程序):

<?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>

还可以查看vendor/bin/phpunit --generate-configuration,这很好。

(3)运行vendor/bin/phpunit

它应该会自动找到配置文件,但是您也可以使用--configuration选项进行指定