Mongo2Go(https://github.com/Mongo2Go/Mongo2Go )是最新的MongoDB二進制文件的托管包裝, 它針對.NET Standard 1.6(對於.NET 4.6),並且可與Windows,Linux和macOS一起使用。此Nuget軟件包包含適用於Windows,Linux和macOS的mongod,mongoimport和mongoexport 的可執行文件,並且應該也可以在更高版本中使用。
Mongo2Go有兩個用例:
- 提供多個,臨時的和隔離的MongoDB數據庫用於單元測試(或者確切地說是集成測試)
- 為本地開發人員環境提供快速設置的MongoDB數據庫
單元測試/集成測試
集成測試是企業發展中經常被忽視的領域。 這主要是由於為集成測試設置必要的基礎架構的相關復雜性。 對於由數據庫支持的應用程序,為集成測試設置數據庫,並且一旦測試完成(例如,數據文件,模式等),就需要相當復雜和耗時,以確保測試的可重復性。 我們可以輕松地設置嵌入式MongoDB實例進行測試,一旦測試完成,內置的清理支持。 ABP VNext 的數據庫如果是MongoDB,它使用Mongo2Go作為集成測試時的數據庫。
每次調用靜態方法 MongoDbRunner.Start() 都會建立一個新的MongoDB實例。將使用一個空閑端口(從端口27018開始),並創建一個相應的數據目錄。該方法返回MongoDbRunner的實例,該實例實現IDisposable。一旦釋放MongoDbRunner(或者如果GC調用了終結器),包裝的MongoDB進程將被殺死,並且數據目錄中的所有數據都將被刪除。
本地調試
在這種模式下,將在默認端口(27017)上啟動一個MongoDB實例。沒有數據將被刪除,並且MongoDB實例不會被自動殺死。多次調用 MongoDbRunner.StartForDebugging() 將返回狀態為“ AlreadyRunning”的實例。您可以忽略IDisposable接口,因為它沒有任何作用。 我強烈建議不要在生產機器上使用此模式! 在這里,您應該按照手冊中的描述設置一個MongoDB。為了您的方便,MongoDbRunner還公開了 mongoexport 和 mongoimport ,使您可以快速設置工作環境。