我搜索得很高,而且惊人地找不到答案。
当尝试使用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.怎么样?
答案 0 :(得分:0)
您是否尝试过phpunit的getMock()方法?
它允许您提供虚假对象进行测试,而无需触及您的生产代码。
但在这种情况下,你必须自己建立预期的结果。
文档在这里: