具有在 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。
使用下面的代码我希望绕过下面代码中的 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。