PHPUnit – 测试SQL查询的有效性

我正在测试工厂类.
其中一个方法必须将数据加载到另一个方法将实例化的对象的数组中.

该方法包含SQL查询,该查询包含必须测试的严重条件. (在这种情况下,只询问“已发布”的记录.例如:WHERE published = 1). SQL Query中的这种区别是使该方法与另一种方法不同的唯一细节,我想测试查询执行行为.

现在,我无法真正模拟我的PDO对象并要求它返回一个固定的结果,因为我不会测试mySQL执行查询.这将是一个无用的测试.

这让我认为我需要在其中设置一个带有固定测试数据的静态数据库.我是对的还是我错过了什么?

我应该将需要“测试数据库”的测试与自主测试分开吗?

我非常同意不嘲笑PDO.在某些时候,我想确保我的查询对真正的数据库有效.虽然这可能不再是单元测试,但从技术上讲.对我而言,它提供了更多知识,我处理数据存储的代码确实可以对数据库起作用.

我倾向于为每个需要与数据库通信的类创建一种数据访问类,从而将大部分业务逻辑与数据库访问代码分离开来.

这样我就可以在测试类时模拟数据访问,然后为每个“数据访问类”设置一个“测试数据库”,看看它们是否有效.

@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 ?

只有当你的测试套件变得非常大并且你有运行时问题迫使你说“甚至打一个测试数据库只需要花费很长时间来进行所有测试,所以我只在连续集成服务器上运行,而不是在开发时.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧