我想测试一个管理数据库中数据访问的类(你知道,CRUD,本质上)。我们正在使用的数据库库恰好有一个API,其中您首先通过静态调用获取表格对象:模拟PHPUnit中的对象来模拟静态方法调用?
function getFoo($id) {
$MyTableRepresentation = DB_DataObject::factory("mytable");
$MyTableRepresentation->get($id);
... do some stuff
return $somedata
}
...您明白了。我们试图测试这个方法,但是嘲笑DataObject的东西,这样(a)我们不需要一个实际的db连接来测试,并且(b)我们甚至不需要包含DB_DataObject lib进行测试。
但是,在PHPUnit中,我似乎无法获得$ this-> getMock()来正确设置静态调用。我有...
$DB_DataObject = $this->getMock('DB_DataObject', array('factory'));
...但测试仍然说未知的方法“工厂”。我知道它正在创建该对象,因为在它表示无法找到DB_DataObject之前。现在可以。但是,没有办法?
我真正想要做的是有两个模拟对象,一个用于返回表格对象。因此,我不仅需要指定工厂是静态调用,还要返回我已经设置的一些指定的其他模拟对象。
我应该提到一个警告,我在SimpleTest前段时间做了这个(找不到代码),它工作正常。
什么给?
[更新]
我开始掌握它是与预计()