在PHP中使用_call()模拟类时出现分段错误

在PHP中使用_call()模拟类时出现分段错误,php,phpunit,mockery,Php,Phpunit,Mockery,我试图模拟一个使用magic方法调用()的类 当我运行测试时,我得到了“分段错误” 它是一个非常简单的类,用于转发对其成员对象上的方法的调用。 我认为这与_call()的使用有关,因为当我删除它时,测试就通过了 我使用的是PHP5.3.3(CentOS 6.5)和PHPUnit4.6 参见代码: <?php use Mockery as m; class HasRoleTest extends PHPUnit_Framework_TestCase { public functi

我试图模拟一个使用magic方法调用()的类

当我运行测试时,我得到了“分段错误”

它是一个非常简单的类,用于转发对其成员对象上的方法的调用。 我认为这与_call()的使用有关,因为当我删除它时,测试就通过了

我使用的是PHP5.3.3(CentOS 6.5)和PHPUnit4.6

参见代码:

<?php

use Mockery as m;

class HasRoleTest extends PHPUnit_Framework_TestCase
{
    public function tearDown()
    {
        m::close();
    }

    function testFoo()
    {
        $foo = m::mock('Foo')->makePartial();
        $this->assertEquals('bar', $foo->bar());
    }
}

class Foo
{
    public function __call($name, $arguments)
    {
        if ($name == 'bar')
            return 'bar';

        return 'something else';
    }
}

在mockry
1.0.0-alpha
之前,使用
\u调用
magic方法的对象可能会导致无限递归,这反过来会导致PHP中的segfault

例如,见以下问题:


这似乎是一个错误,自mockry
1.0.0-alpha

我在一个在线指南中读到使用
\mockry作为m带有反斜杠。但这可能无法解决你的问题,这只是我注意到的一件事