我使用的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()