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