php エディター Baicao は、この記事で Go Mongo-Driver と mtest を使用して UpdateOne からの UpdateResult をシミュレートする方法を紹介します。このメソッドを通じて、テスト環境で UpdateResult オブジェクトをシミュレートし、それに対してさまざまな操作と検証を実行できます。このテクノロジーは、開発者がコードのテストとデバッグをより適切に行い、実稼働環境での安定性と信頼性を確保するのに役立ちます。この記事では、読者がすぐに始めて実際のプロジェクトに適用できるように、Go Mongo-Driver と mtest を使用する手順とサンプル コードを詳しく紹介します。一緒に探検しましょう!
mtest
パッケージ (https://pkg.go.dev/go.mongodb.org/mongo-driver/) を使用しようとしていますmongo/integration /mtest) を使用して、mongodb 呼び出しでモック結果テストを実行しますが、updateone(.. .)
コレクションへの呼び出し ## 値。
問題を示すコード スニペットは次のとおりです:
collection.updateone(context.background(), filter, update)
呼び出しは正常に機能します。エラーは返されません。残念ながら、updateresult.modifiedcount
の値は常に 0 です。
私は、
と のような名前を使用して、
mtest.createsuccessresponse(...) と と bson.d のさまざまな組み合わせを試しました。 n
(コード スニペットに示されているように)、modifiedcount
および matchedcountphp cnendcphpcn.cn を実行しても問題は解決しないようです。 94b3e26ee717c64999d7867364b1b4a3
e388a4556c0f65e1904146cc1a846bee実際に
modifiedcount の値を返すようにこの呼び出しをシミュレートする方法はありますか? <code>
解決策
package test import ( "context" "errors" "testing" "github.com/stretchr/testify/assert" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/integration/mtest" ) func UpdateOneCall(mongoClient *mongo.Client) error { filter := bson.D{{Key: "SomeIDField", Value: "SomeID"}} update := bson.D{{Key: "$set", Value: bson.D{{Key: "ANewField", Value: true}}}} collection := mongoClient.Database("SomeDatabase").Collection("SomeCollection") updateResult, err := collection.UpdateOne(context.Background(), filter, update) if err != nil { return err } if updateResult.ModifiedCount != 1 { return errors.New("no field was updated") } return nil } func TestUpdateOneCall(t *testing.T) { mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock)) defer mt.Close() mt.Run("Successful Update", func(mt *mtest.T) { mt.AddMockResponses(mtest.CreateSuccessResponse( bson.E{Key: "NModified", Value: 1}, bson.E{Key: "N", Value: 1}, )) err := UpdateOneCall(mt.Client) assert.Nil(t, err, "Should have successfully triggered update") }) }
以上がGo Mongo-Driver と mtest を使用して UpdateOne からの UpdateResult をモックするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。