Go MongoDB Driver: Handling ObjectID Validation Errors in Unit Tests
根据错误信息"the provided hex string is not a valid ObjectID",看起来是在使用非法的ObjectID字符串作为输入时出现了问题。\n\n在你的代码中,错误发生在MustFromID函数中。这个函数期望输入的id参数是一个实现了fmt.Stringer接口的类型,然后将其转换为primitive.ObjectID类型。然而,你可能在调用MustFromID函数时传递了一个非法的ObjectID字符串。\n\n解决这个问题的方法是确保传递给MustFromID函数的参数是一个有效的ObjectID字符串。你可以使用id.TripID或id.AccountID类型的实例作为参数,而不是直接传递字符串。\n\n例如,可以将代码修改为以下形式:\n\ngo\nfunc TestCreateTrip(t *testing.T) {\n // ...\n\n cases := []struct {\n name string\n tripID id.TripID\n accountID id.AccountID\n tripStatus rentalpb.TripStatus\n wantErr bool\n }{\n {\n name: "finished",\n tripID: id.TripID("648badb1b4600ccb093e5b29"),\n accountID: id.AccountID("account1"),\n tripStatus: rentalpb.TripStatus_FINISHED,\n },\n // ...\n }\n\n for _, cc := range cases {\n // ...\n tr, err := m.CreateTrip(c, &rentalpb.Trip{\n AccountId: string(cc.accountID),\n Status: cc.tripStatus,\n })\n // ...\n }\n}\n\n\n通过将tripID和accountID定义为id.TripID和id.AccountID类型的值,并在创建rentalpb.Trip时将其转换为字符串,可以避免传递非法的ObjectID字符串。
原文地址: http://www.cveoy.top/t/topic/priS 著作权归作者所有。请勿转载和采集!