mirror of
https://github.com/go-micro/go-micro.git
synced 2024-11-24 08:02:32 +02:00
handle function in mock response
This commit is contained in:
parent
cd9441fafb
commit
52a470532d
@ -80,8 +80,12 @@ func (m *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
if t := reflect.TypeOf(rsp); t.Kind() == reflect.Ptr {
|
if t := reflect.TypeOf(rsp); t.Kind() == reflect.Ptr {
|
||||||
v = reflect.Indirect(v)
|
v = reflect.Indirect(v)
|
||||||
}
|
}
|
||||||
|
response := r.Response
|
||||||
|
if t := reflect.TypeOf(r.Response); t.Kind() == reflect.Func {
|
||||||
|
response = reflect.ValueOf(r.Response).Call([]reflect.Value{})[0].Interface()
|
||||||
|
}
|
||||||
|
|
||||||
v.Set(reflect.ValueOf(r.Response))
|
v.Set(reflect.ValueOf(response))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@ func TestClient(t *testing.T) {
|
|||||||
{Method: "Foo.Bar", Response: map[string]interface{}{"foo": "bar"}},
|
{Method: "Foo.Bar", Response: map[string]interface{}{"foo": "bar"}},
|
||||||
{Method: "Foo.Struct", Response: &TestResponse{Param: "aparam"}},
|
{Method: "Foo.Struct", Response: &TestResponse{Param: "aparam"}},
|
||||||
{Method: "Foo.Fail", Error: errors.InternalServerError("go.mock", "failed")},
|
{Method: "Foo.Fail", Error: errors.InternalServerError("go.mock", "failed")},
|
||||||
|
{Method: "Foo.Func", Response: func() string {return "string"}},
|
||||||
|
{Method: "Foo.FuncStruct", Response: func() *TestResponse {return &TestResponse{Param: "aparam"}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := NewClient(Response("go.mock", response))
|
c := NewClient(Response("go.mock", response))
|
||||||
|
Loading…
Reference in New Issue
Block a user