如何使用PHPUnit模拟通过引用传递变量的函数?

use*_*417 5 php phpunit mocking pass-by-reference

我的代码看起来像:

class A
{
    function foo(&$a, $b)
    {
        if ($a == 0) {
            return false;
        } else {
            $a = $b + 1;
            return true;
        }
    }
}

class B
{
    function foo1($a, $b)
    {
        $a = new A;
        $a->foo($a, $b);
        if ($a == 0) {
            return false;
        }
        echo $a;
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要得到的价值$a.
如何模拟功能foo()

Dav*_*ess 1

PHPUnit 在将参数传递给模拟方法之前克隆参数。对于原始参数没有解决方法,但对于对象,您可以添加一个非公共__clone方法来阻止此行为。