FMa*_*008 9 php mysql phpunit factory
我正在测试工厂类.其中一个方法必须将数据加载到另一个方法将实例化的对象的数组中.
该方法包含SQL查询,该查询包含必须测试的严重条件.(在这种情况下,只询问"已发布"的记录.例如:WHERE published = 1).SQL Query中的这种区别是使该方法与另一种方法不同的唯一细节,我想测试查询执行行为.
现在,我无法模拟我的PDO对象并要求它返回一个固定的结果,因为我不会测试mySQL执行查询.这将是一个无用的测试.
这让我觉得我需要在其中设置一个带有固定测试数据的静态数据库.我是对的还是我错过了什么?
我应该将需要"测试数据库"的测试与自主测试分开吗?
edo*_*ian 11
我非常同意不嘲笑PDO.在某些时候,我想确保我的查询对真正的数据库有效.从技术上讲,这可能不再是单元测试了.对我而言,它提供了更多知识,我处理数据存储的代码确实可以对数据库起作用.
我倾向于为每个需要与数据库通信的类创建一种数据访问类,从而将大部分业务逻辑与数据库访问代码分离开来.
这样我就可以在测试类时模拟数据访问,然后为每个"数据访问类"设置一个"测试数据库",看看它们是否有效.
@zerkms答(+1)已经链接http://phpunit.de/manual/current/en/database.html和唯一的其他资源我已经发现有利用价值,当涉及到DB-测试是书Real-World Solutions for Developing High-Quality PHP Frameworks and Applications有这个主题的一个重要篇章.
我应该将需要"测试数据库"的测试与自主测试分开吗?
只有当你的测试套件变得非常大并且你有运行时问题迫使你说"甚至打一个测试数据库只需要花费很长时间来进行所有我的测试,所以我只在连续集成服务器上运行,而不是在开发时.
| 归档时间: |
|
| 查看次数: |
4419 次 |
| 最近记录: |