Mongodb unit testing bằng golang

Em chào mọi người ạ, em có viết thử một unit test trong mongodb bằng golang nhưng nó gặp vấn đề gì đấy. Test case test cho một query mongo: các tham số truyền vào là các array object là 3 loại: insert, update và delete, mỗi object trong mỗi array đc đánh số thứ tự sau đó đưa tất cả BulkWrite model theo thứ tự đó và gọi một query duy nhất, tham số cuối cùng là boolean, nếu false thì sẽ thực hiện transaction, nếu true thì ko thực hiện mà chỉ viết bulkwrite bình thường, do transaction chỉ chạy trên cluster và chưa có kinh nghiệm nên em chỉ chạy trên standalone với tham số (true), em đã chạy bằng postman insert đc vào db bình thường ạ. Em cũng đã viết query insert và test case cho query đó thì nó pass test case ạ. Test case của em thế này:

package categorybank

import (
	"context"
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/primitive"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/integration/mtest"
)

func TestCategoryBankQuery_MutateCategoryBank(t *testing.T) {
	t.Parallel()

	mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
	defer mt.Close()

	mt.Run("Success", func(mt *mtest.T) {
		client := mt.Client
		categoryBankQuery := NewCategoryBankQuery(client)

		mt.AddMockResponses(bson.D{
			bson.E{Key: "acknowledged", Value: true},
			bson.E{Key: "insertedCount", Value: 1},
			bson.E{Key: "matchedCount", Value: 0},
			bson.E{Key: "deletedCount", Value: 0},
			bson.E{Key: "upsertedCount", Value: 0},
		})

		oid := primitive.NewObjectID()

		result, err := categoryBankQuery.MutateCategoryBank(
			context.Background(),
			[]*CategoryBankWrapper{
				{
					order: 0,
					obj: &CategoryBank{
						Id:         oid,
						BankName:   "Ngân hàng TMCP Ngoại Thương Việt Nam (VIETCOMBANK)",
						BankCode:   "BFTV",
					},
				},
			}, // Insert array
			[]*CategoryBankWrapper{}, // Update array - empty
			[]*CategoryBankWrapper{}, // Delete array - empty
			true, // PartialFailure, determine whether run query in transaction, if true, return partial count success. If false, transaction will apply and query success if and only if all query pass
		)

		assert.Nil(t, err, fmt.Sprintf("Error****: %v", err))
		assert.Equal(t, &mongo.BulkWriteResult{
			InsertedCount: 1,
			UpsertedCount: 0,
			MatchedCount:  0,
			DeletedCount:  0,
			UpsertedIDs:   map[int64]interface{}{},
		}, result)
	})
}

Kết quả sau khi chạy test case:

l-out/k8-fastbuild/testlogs/internal/category_bank/category_bank_test/test.log
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //internal/category_bank:category_bank_test
-----------------------------------------------------------------------------
--- FAIL: TestCategoryBankQuery_MutateCategoryBank (0.00s)
    category_bank.query_test.go:54:
                Error Trace:    /home/.../.cache/bazel/.../7f3ccded36b930050888f253a613bff8/sandbox/linux-sandbox/1662/execroot/__main__/bazel-out/k8-fastbuild/bin/internal/category_bank/category_bank_test_/category_bank_test.runfiles/__main__/internal/category_bank/category_bank.query_test.go:54
                                                        /home/.../.cache/bazel/.../7f3ccded36b930050888f253a613bff8/sandbox/linux-sandbox/1662/execroot/__main__/bazel-out/k8-fastbuild/bin/internal/category_bank/category_bank_test_/category_bank_test.runfiles/__main__/internal/category_bank/mongotest.go:262
                Error:          Expected nil, but got: mongo.CommandError{Code:0, Message:"command failed", Labels:[]string(nil), Name:"", Wrapped:error(nil), Raw:bson.Raw{0x5e, 0x0, 0x0, 0x0, 0x8, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x0, 0x1, 0x10, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x0, 0x1, 0x0, 0x0, 0x0, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
                Test:           TestCategoryBankQuery_MutateCategoryBank
                Messages:       Error****: command failed
    category_bank.query_test.go:55:
                Error Trace:    /home/.../.cache/bazel/.../7f3ccded36b930050888f253a613bff8/sandbox/linux-sandbox/1662/execroot/__main__/bazel-out/k8-fastbuild/bin/internal/category_bank/category_bank_test_/category_bank_test.runfiles/__main__/internal/category_bank/category_bank.query_test.go:55
                                                        /home/.../.cache/bazel/.../7f3ccded36b930050888f253a613bff8/sandbox/linux-sandbox/1662/execroot/__main__/bazel-out/k8-fastbuild/bin/internal/category_bank/category_bank_test_/category_bank_test.runfiles/__main__/internal/category_bank/mongotest.go:262
                Error:          Not equal:
                                expected: &mongo.BulkWriteResult{InsertedCount:1, MatchedCount:0, ModifiedCount:0, DeletedCount:0, UpsertedCount:0, UpsertedIDs:map[int64]interface {}{}}
                                actual  : (*mongo.BulkWriteResult)(nil)

                                Diff:
                                --- Expected
                                +++ Actual
                                @@ -1,10 +1,2 @@
                                -(*mongo.BulkWriteResult)({
                                - InsertedCount: (int64) 1,
                                - MatchedCount: (int64) 0,
                                - ModifiedCount: (int64) 0,
                                - DeletedCount: (int64) 0,
                                - UpsertedCount: (int64) 0,
                                - UpsertedIDs: (map[int64]interface {}) {
                                - }
                                -})
                                +(*mongo.BulkWriteResult)(<nil>)

                Test:           TestCategoryBankQuery_MutateCategoryBank
FAIL

Mong được giúp đỡ ạ, em xin cảm ơn mọi người.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?