在 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,不工作。收到错误凭据消息