根据错误信息"the provided hex string is not a valid ObjectID",看起来是在使用非法的ObjectID字符串作为输入时出现了问题。

在你的代码中,错误发生在MustFromID函数中。这个函数期望输入的id参数是一个实现了fmt.Stringer接口的类型,然后将其转换为primitive.ObjectID类型。然而,你可能在调用MustFromID函数时传递了一个非法的ObjectID字符串。

解决这个问题的方法是确保传递给MustFromID函数的参数是一个有效的ObjectID字符串。你可以使用id.TripIDid.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,
        })
        // ...
    }
}

通过将tripIDaccountID定义为id.TripIDid.AccountID类型的值,并在创建rentalpb.Trip时将其转换为字符串,可以避免传递非法的ObjectID字符串


原文地址: http://www.cveoy.top/t/topic/hIfp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录