给定对象不是该类的实例,当试图在PHPUnit测试中设置成员变量时,该方法被错误地声明

问题描述 投票:0回答:1

[在尝试在我的课程中设置“ logger”属性时收到以下错误。

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

中声明
public function testCheckForRecentActivity()
{
    self::bootKernel();

    $plan = new \ReflectionClass('AppBundle\Services\Courses\Revision0');

    $logger = $plan->getMethod('setLogger');
    $logger->setAccessible(true);
    $logger->invoke($plan, static::$kernel->getContainer()->get('logger.golf'));

    // ....
}

类的层次结构看起来像这样:

class Revision0 extends Base

abstract class Base extends Plans\PlanBase

使用abstract class PlanBaseLoggerTrait)的[use LoggerTrait;

LoggerTrait看起来像:

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

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

我是否缺少某些东西阻止我在测试中设置记录器?

symfony reflection phpunit php-7 symfony-3.4
1个回答
0
投票

ReflectionMethod->invoke()调用中的第一个参数是错误的。它应该是'AppBundle\Services\Courses\Revision0'的实例。另请参见此处:https://www.php.net/manual/de/reflectionmethod.invoke.php

© www.soinside.com 2019 - 2024. All rights reserved.