我正在使用 PHPUnit 制作一个模拟类进行测试。
class Item extends Object {
protected static $_cache;
}
我很确定嘲笑会做这样的事情(如果我错了,请纠正我):
class Mock_Item_randomstring extends Item {
}
当我Item
的缓存被填充时,它会检查传入的对象是否是Item
. 由于模拟没有明确定义$_cache
,它无法检查实例类型。
PHP 根本没有真正记录反射函数。有没有办法在事后设置静态变量,这样类就会变成
class Mock_Item_randomstring extends Item {
protected static $_cache;
}
编辑
我玩弄了反射方法并遇到了各种各样的问题。这是我感到困惑的一个:
$mock = $this->getMock( 'Item', array( '_func' ), array(
$argument1, $argument2
));
$mock = new ReflectionClass($mock);
$mock->staticExpects( $this->exactly(2) )->method( '_func' );
我假设反思复制了整个班级。我收到此错误:
Call to undefined method ReflectionClass::staticExpects()