github.com/etecs-ru/gnomock@v0.13.2/preset/mongo/README.md (about) 1 # Gnomock MongoDB 2 3 Gnomock MongoDB is a [Gnomock](https://github.com/orlangure/gnomock) preset for running tests against a real MongoDB 4 container, without mocks. 5 6 ```go 7 package mongo_test 8 9 import ( 10 "context" 11 "fmt" 12 13 "github.com/orlangure/gnomock" 14 "github.com/orlangure/gnomock/preset/mongo" 15 "go.mongodb.org/mongo-driver/bson" 16 mongodb "go.mongodb.org/mongo-driver/mongo" 17 mongooptions "go.mongodb.org/mongo-driver/mongo/options" 18 ) 19 20 func ExamplePreset() { 21 p := mongo.Preset( 22 mongo.WithData("./testdata/"), 23 mongo.WithUser("gnomock", "gnomick"), 24 ) 25 c, err := gnomock.Start(p) 26 27 defer func() { _ = gnomock.Stop(c) }() 28 29 if err != nil { 30 panic(err) 31 } 32 33 addr := c.DefaultAddress() 34 uri := fmt.Sprintf("mongodb://%s:%s@%s", "gnomock", "gnomick", addr) 35 clientOptions := mongooptions.Client().ApplyURI(uri) 36 37 client, err := mongodb.NewClient(clientOptions) 38 if err != nil { 39 panic(err) 40 } 41 42 ctx := context.Background() 43 44 err = client.Connect(ctx) 45 if err != nil { 46 panic(err) 47 } 48 49 // see testdata folder to verify names/numbers 50 fmt.Println(client.Database("db1").Collection("users").CountDocuments(ctx, bson.D{})) 51 fmt.Println(client.Database("db2").Collection("customers").CountDocuments(ctx, bson.D{})) 52 fmt.Println(client.Database("db2").Collection("countries").CountDocuments(ctx, bson.D{})) 53 54 // Output: 55 // 10 <nil> 56 // 5 <nil> 57 // 3 <nil> 58 } 59 ```