【问题标题】:Keep getting 'You have requested a non-existent service "test.client"' in Symfony2 Beta3在 Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””
【发布时间】:2011-09-07 00:05:11
【问题描述】:

我正在尝试设置单元测试,但每当我运行“phpunit -c app”时,我都会收到此错误:

Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:您请求了一个不存在的服务“test.client”。

我的测试用例中的代码只是:

public function testNonAuthenticatedPathsIndex()
{
    $client = $this->createClient();
}

如果我不调用 createClient,一切都会正常运行。我检查了 AppKernel.php 以确保 FrameworkBundle(我相信这是定义此服务的位置)肯定仍然存在并且确实存在。

我对可能导致这种情况的原因有点困惑,因为我以前曾设法做这种事情。

感谢您的帮助。

【问题讨论】:

    标签: php symfony phpunit


    【解决方案1】:

    您是否在 config_test.yml 中启用了framework.test 选项?

    framework:
      test: ~
    

    【讨论】:

    • 解决了。很生气,我自己没有发现,所以感谢您的帮助。
    • +1 谢谢,这在文档中的什么位置?我一定错过了。
    • 这个答案在 2014 年的 Symfony 2.3.22 中仍然有效。谢谢!
    • @wesside : 它显示在this page 但不在链接页面中。
    • 对 symfony 2.8.2 仍然有效!
    【解决方案2】:

    我在使用 symfony 3.3.13 版本时遇到了这个问题。

    config_test.yml 文件没问题,但我犯了同样的错误。

    我解决了在 phpunit.xml 文件中的php 下添加<server name ="APP_ENV" value="test" /> 选项

    【讨论】:

    • 这在我的 3.4.1 中没有解决
    【解决方案3】:

    phpunit.xml 你应该有这样的环境变量:

    <env name="APP_ENV" value="test"/>
    

    【讨论】:

      【解决方案4】:

      我在远程构建项目时遇到了同样的问题。此问题与我项目根目录中的空 symfony.lock 文件有关。该文件用于防止 symfony 配方执行两次。但是我的symfony.lock 已损坏且为空,因此框架包执行了它的配方并将phpunit.xml.dist 中的APP_ENV 变量从test 替换为dev。发生的原因是repositories节点在composer.json(https://github.com/symfony/flex/issues/347)

      我正在通过手动在symfony.lock 中添加依赖项来解决这种情况

      【讨论】:

        【解决方案5】:

        composer require symfony/browser-kit

        test.client 的定义取决于AbstractBrowser::class 的存在

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-05
          • 1970-01-01
          • 2016-01-06
          • 2013-02-03
          • 2018-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多