使用PHPUnit Bridge测试可重用的Symfony Bundle

Res*_*per 6 phpunit bundle symfony

我最近遇到了PHPUnit Bridge,并且已经在我的任何独立Symfony应用程序中使用它.但是,我注意到我们维护的可重用捆绑依赖项的一些弃用通知.

为了诊断,我打开了可重复使用的捆绑项目并进行了安装symfony/phpunit-bridge,但是在运行后phpunit注意到没有弃用通知等,正在为项目输出.

那么如何利用symfony/phpunit-bridge可重复使用的软件包?

A.L*_*A.L 2

\n

我注意到我们维护的可重用捆绑依赖项出现了一些弃用通知。

\n\n

为了进行诊断,我打开了可重用的捆绑项目并安装了symfony/phpunit-bridge,但运行后phpunit注意到该项目没有输出任何弃用通知等。

\n
\n\n

相同的代码并不总是触发相同的警告,这一事实可能表明测试是不同的。

\n\n

如果这来自 PHP 代码,您可以使用PHP_CodeCoverage查看已测试和未测试的代码。当您使用 PHPUnit 时,您可以添加一个选项来生成代码覆盖率报告,例如phpunit \xe2\x80\xa6 --coverage-html cov/将在目录中生成 HTML 报告cov/。通过比较输出,您可以查看从 Symfony 启动的测试是否调用与从 Bundle 启动的测试相同的代码。

\n\n

如果测试不同,您可以为您的包设置 Symfony 环境

\n\n
\n

创建测试内核

\n\n
<?php\n// Tests/Controller/App/AppKernel.php\n\nuse Symfony\\Component\\HttpKernel\\Kernel;\nuse Symfony\\Component\\Config\\Loader\\LoaderInterface;\n\nclass AppKernel extends Kernel\n{\n    public function registerBundles()\n    {\n        $bundles = array(\n            // Dependencies\n            new Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle(),\n            [...]\n            // My Bundle to test\n            new Beberlei\\WorkflowBundle\\BeberleiWorkflowBundle(),\n        );\n\n        return $bundles;\n    }\n\n    public function registerContainerConfiguration(LoaderInterface $loader)\n    {\n        // We don\'t need that Environment stuff, just one config\n        $loader->load(__DIR__.\'/config.yml\');\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

创建 config.yml

\n\n
# Tests/Controller/App/config.yml\nframework:\n    secret:          secret\n    charset:         UTF-8\n    test: ~\n    router:          { resource: "%kernel.root_dir%/routing.yml" }\n    form:            true\n    csrf_protection: true\n    validation:      { enable_annotations: true }\n    templating:      { engines: [\'twig\'] }\n    session:\n        auto_start:     false\n        storage_id: session.storage.filesystem\n\nmonolog:\n    handlers:\n        main:\n            type:         fingers_crossed\n            action_level: error\n            handler:      nested\n        nested:\n            type:  stream\n            path:  %kernel.logs_dir%/%kernel.environment%.log\n            level: debug\n
Run Code Online (Sandbox Code Playgroud)\n\n

创建routing.yml

\n\n
# Tests/Controller/App/routing.yml\nBeberleiWorkflowBundle:\n    resource: "@BeberleiWorkflowBundle/Controller/"\n    type:     annotation\n    prefix:   /\n
Run Code Online (Sandbox Code Playgroud)\n\n

修改 phpunit.xml.dist

\n\n
<!-- phpunit.xml.dist -->\n<phpunit bootstrap="Tests/bootstrap.php">\n    <php>\n        <server name="KERNEL_DIR" value="Tests/Controller/App" />\n    </php>\n</phpunit>\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

然后,您可以添加"symfony/symfony": "~2.3"所需的软件包composer.json并安装这些软件包。未来的测试将启动此 AppKernel 并在完整的 Symfony 环境中执行测试。

\n