具有在 stdClass undefined 中定义的函数的模拟外观

Mocked facade with function defined in stdClass undefined

使用下面的代码我希望绕过下面代码中的 fit() 功能要求:

对于上下文,图像是外观。

测试

$image = new stdClass;
$image->fit = function ($x, $y){};

Image::shouldReceive('make')->once()->andReturn(
    $image
);

实施

$image = Image::make($path);
$image->fit(150, 150);

错误

Error: Call to undefined method stdClass::fit()

我试过使函数fit()静态化

在您的示例中 $image->fit 是 class 属性,而不是方法。您不能在 属性 中调用函数,就好像它是一个方法一样(例如,如果您有一个 属性 和一个具有相同名称的方法,这会导致问题)。

您可以尝试使用 anonymous class 代替:

$image = new class() {
    public function fit($x, $y) {
        // some code
    }
};

Image::shouldReceive('make')->once()->andReturn(
    $image
);

您只需按照正常的方式编写即可 class。