有效使用 MongoDB 和 PHPUnit 的最佳实践是什么?我应该(或可以)使用什么来模拟访问 MongoDB 的对象? PHPUnit Mocker , Mockery , Phrophecy , Phactory ?
最佳答案
如果您查看 SQL 数据库的模拟数据,这里有很多意见。
- 有些人建议使用内存中的 SQL 数据库。
- 有些人只是 mock ORM 调用并假设 ORM 到 DB 部分已经过测试。
- 有些人只是使用“本地”数据库进行单元测试,而忽略了整个“模拟”概念。
鉴于对 SQL 缺乏共识,您更不可能就 MongoDB 等新数据库达成共识。
我认为这里有一些重要的细节需要考虑。
- 您是否在使用某种形式的 ORM/ODM?只是司机直接?
- 您是否正在尝试模拟与数据库的所有通信?您是否要模拟 ODM?
如果您只是想模拟与 DB 的通信,那么理想的解决方案是 MongoDB 驱动程序的“假”实现。这可能需要大量工作,因为在编写驱动程序时从未考虑过“可模拟性”。
如果您有 ODM,那么您可以简单地模拟 ODM 调用并假设 ODM 正在执行其工作。理想情况下,ODM 应该提供一些可模拟的接口(interface),但情况并非总是如此。
再一次,这个答案归结为您真正计划测试什么以及您认为什么是好的单元测试。不幸的是,这些产品中的大多数仍然很新,因此在这个领域几乎没有指导。
关于mongodb - 使用 Mocking 在 PHP 应用程序中测试 MongoDB 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630595/