热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

symfonysimple-phpunit错误“您已请求部署脚本中不存在的服务“test.client””

如何解决《symfonysimple-phpunit错误“您已请求部署脚本中不存在的服务“test.client””》经验,为你挑选了1个好方法。

的PHP:7.2.7

SYMFONY:3.4.12

PHPUNIT-BRIDGE:4.1.1(phpunit 6.5.8)


我有一个用PHP编写的部署脚本,该脚本以root用户身份运行,并且由于从7.0升级到php 7.2并相应地更新了我的代码,因此在运行phpunit测试时,该脚本已开始莫名其妙地失败。我确定我在这里有错,但是经过许多小时的调试,我仍然一无所获,希望有人可以为我指明正确的方向。

该脚本以root身份运行,并在执行以下命令时运行:

exec("runuser MY-USER -c 'bin/simple-phpunit'", $output, $returnCode);

我所有的测试都失败了:

You have requested a non-existent service "test.client"

关于此错误有很多SO问题,并且与phpunit环境未设置为“测试”有关。我的phpunit.xml使用正确的值:


疯狂的是,当我自己(以MY-USER)运行时,单元测试运行得很好。当我以root身份登录并执行时,它们甚至可以正常运行

runuser MY-USER -c 'bin/simple-phpunit'

我做的时候他们甚至

$ sudo su
$ php -a
php > exec("runuser MY-USER -c 'bin/simple-phpunit'", $output, $returnCode);

当我感到绝望并开始将变量转储到控制台时,似乎一切正常:

echo "ENV = " .getenv('APP_ENV');  // [OUTPUT BELOW]

ENV = dev

exec('bin/console debug:container test.client -e test', $output, $return);
var_dump(implode("\n", $output));  // [OUTPUT BELOW]

Information for Service "test.client"
=====================================

---------------- ---------------------------------------
Option           Value
---------------- ---------------------------------------
Service ID       test.client
Class            Symfony\Bundle\FrameworkBundle\Client
Tags             -
Public           yes
Synthetic        no
Lazy             no
Shared           no
Abstract         no
Autowired        no
Autoconfigured   no

exec("runuser arderyp -c 'bin/simple-phpunit --debug'", $output, $return);
var_dump(implode("\n", $output));  // [OUTPUT BELOW]

# Everything fails in the same fashion as below
8) App\Tests\Authentication\Security\SomeTest::testSomething
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "test.client".

在运行测试之前,我使用symfony标准方法正确解析了.env:

$dotenv = new Dotenv();
$dotenv->load('.env');

94638857.. 5

好吧,似乎我也对PHPUnit的这种变化感到有点受宠:https://github.com/sebastianbergmann/phpunit/issues/2353

force="true"属性添加到我的所有env元素中可以解决此问题。

这里的问题是,在进入此phpunit步骤之前,我正在通过加载Dotenv本地.env文件。如果没有上述force属性,则中的环境变量phpunit.xml不会覆盖已经由设置的环境变量.env。因此,使用APP_ENV=dev而不是进行测试APP_ENV=test,这导致test.client服务无法识别,因为该服务只能在test环境中访问。显然,这是新phpunit功能。的早期版本phpunit默认允许覆盖变量,这解释了为什么我仅在升级PHP(以及phpunit)之后才开始遇到此问题。



1> 94638857..:

好吧,似乎我也对PHPUnit的这种变化感到有点受宠:https://github.com/sebastianbergmann/phpunit/issues/2353

force="true"属性添加到我的所有env元素中可以解决此问题。

这里的问题是,在进入此phpunit步骤之前,我正在通过加载Dotenv本地.env文件。如果没有上述force属性,则中的环境变量phpunit.xml不会覆盖已经由设置的环境变量.env。因此,使用APP_ENV=dev而不是进行测试APP_ENV=test,这导致test.client服务无法识别,因为该服务只能在test环境中访问。显然,这是新phpunit功能。的早期版本phpunit默认允许覆盖变量,这解释了为什么我仅在升级PHP(以及phpunit)之后才开始遇到此问题。


推荐阅读
  • 如何解决《在测试类Symfony2中获取容器》经验,为你挑选了1个好方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 【用JS自制表格软件玩数据】8. 设计单元格中的右键菜单
    右键菜单选项的设计效果图基本数据分析功能菜单的渲染模块右键菜单的样式最终结果当写完本系列后,我会把源代码分享出来给大家。本课程也会持续更新与矫正。欢迎留言指正 ... [详细]
  • 如何解决《我怎样才能在phpunit中模拟gitdiff的结果》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《持续集成,使用PropelORM将实际测试数据输入数据库的最佳实践》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《PHPUnit:模拟不存在的类》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《如何正确地需要一个phar文件》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《如何在测试失败时使用PHPUnit和Selenium2捕获屏幕截图?》经验,为你挑选了2个好方法。 ... [详细]
  • 如何解决《PHPUnit测试double抛出PHPUnit_Framework_MockObject_BadMethodCallException》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《如何在Laravel中获取HTTP请求正文内容?》经验,为你挑选了1个好方法。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 前言本篇为大家总结社区多人合作常见的场景和对应的git操作命令。本篇非新手教程,阅读本篇前需具备Git基础知识。Git入门教程请参考https://www ... [详细]
author-avatar
龙鹰的天涯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有