在PHPUnit和PHP7 +中模拟Stomp给出错误“未定义的属性:Mock_Stomp_5872f424 :: $ __ phpunit_invocationMocker”

问题描述

我正在使用扩展为PHP:7.4-fpmpecl stomp-2.0.2的dockerized环境。我已经从PHP:5.6-fpm迁移了代码。我正在为下面的“ StompTest.PHP文件运行PHPunit,但出现以下错误/警告。我也降级到stomp-2.0.0stomp-2.0.1,但是没有运气。

StompTest.PHP

<?PHP

class StompTest extends \PHPUnit\Framework\TestCase
{
    private $stomp;
    protected function setUp(): void
    {
        $this->stomp = $this->getMockBuilder(\Stomp::class)
            ->disableOriginalConstructor()
            ->getMock();
    }

    public function testReceiveCorrectMessage()
    {
        $this->stomp
            ->expects($this->any())
            ->method('send')
            ->willReturn(true);
        // other logic here
    }
}

获得此输出

There was 1 error:

1) StompTest::testReceiveCorrectMessage
Undefined property: Mock_Stomp_5872f424::$__PHPunit_invocationMocker

/var/www/html/src/Test/StompTest.PHP:16

ERRORS!
Tests: 1,Assertions: 0,Errors: 1.

Notice: Undefined property: Mock_Stomp_5872f424::$__PHPunit_invocationMocker in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code on line 368

Call Stack:
    0.0004     397128   1. {main}() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:0
    0.0075    1066024   2. PHPUnit\TextUI\Command::main() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:61
    0.0075    1066136   3. PHPUnit\TextUI\Command->run() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:162
    0.0421    3030544   4. PHPUnit\TextUI\TestRunner->doRun() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:206
    0.0640    5063208   5. Mock_Stomp_5872f424->__destruct() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:0
    0.0640    5063208   6. Mock_Stomp_5872f424->__PHPunit_getInvocationMocker() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:48


Notice: Undefined property: Mock_Stomp_5872f424::$__PHPunit_configurable in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code on line 369

Call Stack:
    0.0004     397128   1. {main}() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:0
    0.0075    1066024   2. PHPUnit\TextUI\Command::main() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:61
    0.0075    1066136   3. PHPUnit\TextUI\Command->run() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:162
    0.0421    3030544   4. PHPUnit\TextUI\TestRunner->doRun() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:206
    0.0640    5063208   5. Mock_Stomp_5872f424->__destruct() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:0
    0.0640    5063208   6. Mock_Stomp_5872f424->__PHPunit_getInvocationMocker() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:48


Fatal error: Uncaught TypeError: Argument 1 passed to PHPUnit\Framework\MockObject\InvocationMocker::__construct() must be of the type array,null given,called in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code on line 369 and defined in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/InvocationMocker.PHP on line 50

Call Stack:
    0.0004     397128   1. {main}() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:0
    0.0075    1066024   2. PHPUnit\TextUI\Command::main() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:61
    0.0075    1066136   3. PHPUnit\TextUI\Command->run() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:162
    0.0421    3030544   4. PHPUnit\TextUI\TestRunner->doRun() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:206

TypeError: Argument 1 passed to PHPUnit\Framework\MockObject\InvocationMocker::__construct() must be of the type array,called in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code on line 369 in /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/InvocationMocker.PHP on line 50

Call Stack:
    0.0004     397128   1. {main}() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:0
    0.0075    1066024   2. PHPUnit\TextUI\Command::main() /var/www/html/vendor/PHPunit/PHPunit/PHPunit:61
    0.0075    1066136   3. PHPUnit\TextUI\Command->run() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:162
    0.0421    3030544   4. PHPUnit\TextUI\TestRunner->doRun() /var/www/html/vendor/PHPunit/PHPunit/src/TextUI/Command.PHP:206
    0.0640    5063208   5. Mock_Stomp_5872f424->__destruct() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:0
    0.0640    5063208   6. Mock_Stomp_5872f424->__PHPunit_getInvocationMocker() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:48
    0.0645    5082648   7. PHPUnit\Framework\MockObject\InvocationMocker->__construct() /var/www/html/vendor/PHPunit/PHPunit/src/Framework/MockObject/Generator.PHP(648) : eval()'d code:369

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)