【发布时间】:2012-02-17 15:23:39
【问题描述】:
我需要创建一个具有默认属性集的模拟对象,以便在实例化时可以在代码库中的其他软件中使用它。
$mock = $this->getMock('MyClass', array(), array(), 'MyClass_Mock');
$mock->prop = 'foobar';
$myclassMock = new get_class($mock);
var_dump($myclassMock->prop); // NULL
// How can I make this dump 'foobar' ?
我正在测试确定、定位和实例化这些类的框架的一部分,因此注入模拟对象会破坏测试的目的。
我不需要模拟任何方法.. 只需像这样动态创建一个模拟类:
class MyClass_Mock extends MyClass {
public $prop = 'foobar';
}
编辑:简化示例
【问题讨论】:
-
为了清楚起见,您想模拟一个现有的类,并为您的模拟提供该类的默认属性,而不实际实例化被模拟的类?
-
@Leigh 是的,该类将在框架中更深地实例化。我正在模拟的类是一个抽象模型,我想给它一些
$fields,这样它就会像一个真实的模型一样。我知道 PHPUnit 通过将代码写入字符串并 evaling() 来创建模拟。我只是不知道如何在该过程中包含属性声明。