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