Symfony 给定的对象不是类的实例。当尝试在PHPUnit测试中设置成员变量时,此方法声明错误

Symfony 给定的对象不是类的实例。当尝试在PHPUnit测试中设置成员变量时,此方法声明错误,symfony,reflection,phpunit,php-7,symfony-3.4,Symfony,Reflection,Phpunit,Php 7,Symfony 3.4,在尝试设置类的“logger”属性时,出现以下错误 ReflectionException:给定对象不是该类的实例 方法是在中声明的 类层次结构如下所示: 类修订0扩展基础 abstract class Base扩展计划\PlanBase 抽象类PlanBase使用LoggerTrait(使用LoggerTrait;) LoggerTrait看起来像: /** * @var LoggerInterface */ protected $logger; /** * @required *

在尝试设置类的“logger”属性时,出现以下错误

ReflectionException:给定对象不是该类的实例 方法是在中声明的

类层次结构如下所示:

类修订0扩展基础

abstract class Base扩展计划\PlanBase

抽象类PlanBase
使用
LoggerTrait
使用LoggerTrait;

LoggerTrait
看起来像:

/**
 * @var LoggerInterface
 */
protected $logger;

/**
 * @required
 * @param LoggerInterface $logger
 */
public function setLogger(LoggerInterface $logger)
{
    $this->logger = $logger;
}

是否有什么东西使我无法在测试中设置记录器?

您的
ReflectionMethod->invoke()
调用中的第一个参数错误。它应该是AppBundle\Services\Courses\Revision0的一个实例。另请参见此处:

您的
ReflectionMethod->invoke()
调用中的第一个参数是错误的。它应该是AppBundle\Services\Courses\Revision0的一个实例。另请参见此处:

您的
ReflectionMethod->invoke()
调用中的第一个参数是错误的。它应该位于
'AppBundle\Services\Courses\Revision0'
@thehenny的实例中,谢谢您的评论。请随意提交答案,我很乐意接受。您的
ReflectionMethod->invoke()
调用中的第一个参数是错误的。它应该位于
'AppBundle\Services\Courses\Revision0'
@thehenny的实例中,谢谢您的评论。请随意提交答案,我很乐意接受。我也有同样的问题。我知道OP需要类
Revision0
的实例,但如何动态创建它,而不必硬编码
new Revision0()
?没关系。我自己找到了答案。我也有同样的问题。我知道OP需要类
Revision0
的实例,但如何动态创建它,而不必硬编码
new Revision0()
?没关系。我自己找到了答案。使用
/**
 * @var LoggerInterface
 */
protected $logger;

/**
 * @required
 * @param LoggerInterface $logger
 */
public function setLogger(LoggerInterface $logger)
{
    $this->logger = $logger;
}