我必须为php类编写测试,该类使用由我们使用的apache扩展创建的资源类型,但让我们假设它是一个带有mysql资源类型的数据库类。模拟php的单元测试资源类型
显然我想嘲笑这些全局函数,但是当类检查资源是否创建好时如何伪造返回类型?
php文档中的资源页面甚至有一条评论抱怨测试无法进行模拟。这是最终的答案吗?
比方说,我有(例如瘸)代码:
class DB {
function init(){
$this->handle = mysql_connect('myserver');
if(get_resource_type($this->handle) != 'mysql') return false;
return true;
}
}
,然后测试对于成功和失败的考验,通过嘲讽mysql_connect
。
我没有看到你指向...如果我要测试这个类,并且在curl_exec之前检查资源的类型是原始卷曲类型?我不希望它使用真正的卷曲功能? – gcb 2012-04-13 17:27:25
@gcb:你可能要单元测试'Curl'类(当你这样做时,句柄是一个内部的,不需要测试),或者你想测试一些其他使用Curl的组件'类,那么你可以给它一个'Curl'类的模拟。 – hakre 2012-04-13 18:02:38
如果我正在测试'Curl'类,那么如何避免打击Web服务器和不一致呢? – gcb 2012-04-13 18:06:04