MongoDB Atlas Local¶
MongoDB Atlas Local runs a local Atlas deployment in a single container. In addition to MongoDB, it runs the Atlas Search process, so you can test Atlas Search and Atlas Vector Search without an Atlas cluster.
Add the following dependency to your project file:
| NuGet | |
|---|---|
1 | |
You can start a MongoDB Atlas Local container instance from any .NET application. Here, we create different container instances and pass them to the base test class. This allows us to test different configurations.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
This example uses xUnit.net's IAsyncLifetime interface to manage the lifecycle of the container. The container is started in the InitializeAsync method before the test method runs, ensuring that the environment is ready for testing. After the test completes, the container is removed in the DisposeAsync method.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | |
The test example creates an Atlas Search index. Use GetConnectionString() to configure the MongoDB client. The default configuration creates the root user mongo with the password mongo. Use WithUsername(string) and WithPassword(string) to configure different credentials, or set both to an empty string to disable authentication.
The test example uses the following NuGet dependencies:
1 2 3 4 5 | |
To execute the tests, use the command dotnet test from a terminal.
Tip
For the complete source code of this example and additional information, please refer to our test projects.
Init scripts¶
Use WithInitScript(string) or WithInitScriptContent(string, string) to seed the deployment on its first start. JavaScript (.js) scripts run in mongosh against the database set with WithInitDatabase(string), which defaults to test. Shell (.sh) scripts run in bash. The scripts run in alphabetical order of their file names before the container is ready:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
A restarted or reused container keeps its data and does not run the init scripts again.