在 Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””

Posted

技术标签:

【中文标题】在 Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””【英文标题】:Keep getting 'You have requested a non-existent service "test.client"' in Symfony2 Beta3 【发布时间】: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(我相信这是定义此服务的位置)肯定仍然存在并且确实存在。

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

感谢您的帮助。

【问题讨论】:

【参考方案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 的存在

【讨论】:

以上是关于在 Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 安全,使用 sha512,不工作。收到错误凭据消息

CasperJS 绑定问题

如何在 Symfony2 中将 Json 绑定到实体中

Symfony2 中的 Twig CamelCase 过滤器

Symfony2 - 访问被拒绝

symfony2 cygwin cli php命令错误