phpUnit和继承ADODB_Active_Record的模型,存根ADODB_mysql

时间:2011-07-07 18:42:29

标签: unit-testing phpunit adodb

我搜索得很高,而且惊人地找不到答案。

当尝试使用phpUnit对模型进行单元测试时,如何存根数据库?

我正在使用PHP框架CMS,它有许多继承自ADODB_Active_Record的类(“Model”)的类。 Model的构造函数抓取一个db对象(来自ADOConnection)并将其传递给Active_Record的构造函数。

它可能不是最佳实践,但为了尽可能少地更改代码,我正在考虑调整grabDBObject()以在测试时返回存根对象。该存根传递给ADODB_Active_Record,理论上我可以测试我的模型。

但是,我无法弄清楚如何创建存根。 ADODB_Connection并不简单。这不会是替换Execute()的问题。还有许多其他函数,比如qstr(),看来我必须担心并在必要时重写。

令人惊讶的是,我找不到任何关于这样做的人的讨论。这必须是一个普遍的问题。我走错了方向吗?我知道我可以使用类似dbUnit的东西来实际执行数据库查询而不是存根ADODB_connection,但我也理解我应该尽可能地存根,并且依靠数据库进行模型方法的单元测试是不好的。 / p>

所以, 1.我是否应该对数据库连接进行单元测试? 2.怎么样?

1 个答案:

答案 0 :(得分:0)

您是否尝试过phpunit的getMock()方法?

它允许您提供虚假对象进行测试,而无需触及您的生产代码。

但在这种情况下,你必须自己建立预期的结果。

文档在这里:

http://www.phpunit.de/manual/3.0/en/mock-objects.html