使用Mocking在PHP应用程序中测试MongoDB交互
与MongoDB和PHPUnit高效合作的最佳实践是什么?我应该(或者可以)使用什么来模拟访问MongoDB的对象 如果您查看SQL数据库的模拟数据,这里有很多观点使用Mocking在PHP应用程序中测试MongoDB交互,mongodb,unit-testing,mocking,phpunit,phactory,Mongodb,Unit Testing,Mocking,Phpunit,Phactory,与MongoDB和PHPUnit高效合作的最佳实践是什么?我应该(或者可以)使用什么来模拟访问MongoDB的对象 如果您查看SQL数据库的模拟数据,这里有很多观点 有些人建议使用内存中的SQL数据库 有些人只是模拟ORM调用,并假设ORM到DB部分已经过测试 有些人只是使用“本地”DB进行单元测试,而忽略了整个“模拟”概念 鉴于对SQL缺乏共识,您甚至不太可能在MongoDB这样的新DBs上找到共识 我认为这里有一些重要的细节要考虑。< /P> 您正在使用某种形式的ORM/ODM吗?直接
- 有些人建议使用内存中的SQL数据库
- 有些人只是模拟ORM调用,并假设ORM到DB部分已经过测试
- 有些人只是使用“本地”DB进行单元测试,而忽略了整个“模拟”概念
- 您正在使用某种形式的ORM/ODM吗?直接找司机
- 您是否试图模拟与DB的所有通信?你是在嘲笑ODM吗
<?php
use Helmich\MongoMock\MockCollection;
$collection = new MockCollection();
$collection->createIndex(['foo' => 1]);
$documentId = $collection->insertOne(['foo' => 'bar'])->insertedId();
$collection->updateOne(['_id' => $documentId], ['$set' => ['foo' => 'baz']]);
是的,我对这门学科相当陌生,我只找到了非常不具体的资源。我只是想确保在这种特定情况下遵循最佳实践:在php应用程序中测试mongodb。我认为,测试的一般建议适用于这里:您编写一些测试,然后再编写一些测试。PHP有,不是吗?是的,没问题,我用的是phpunit。我的问题更多的是关于如何高效地使用mongodb,我应该使用什么来模拟对象?phpunit mocker,mockery,phactory?啊,你应该更新你的问题,让它更清楚。你想模拟哪些对象?有很多嘲弄的解决方案,选择一个适合你的。如果您不知道是哪一种,请从接近PHPUnit的产品开始。是的,我希望有更好的解决方案/示例,但我认为“不幸的是,这些产品中的大多数仍然是非常新的,因此在这一领域几乎没有指导。”是正确的;)Thx。不幸的是那些链接已经不存在了。是的,不幸的是我再也找不到他们的文档了。我将删除链接。