fix and add tests
This commit is contained in:
parent
c1c0a8fb30
commit
08d70c9d0a
@ -84,7 +84,7 @@ func (m *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
response := r.Response
|
response := r.Response
|
||||||
if t := reflect.TypeOf(r.Response); t.Kind() == reflect.Func {
|
if t := reflect.TypeOf(r.Response); t.Kind() == reflect.Func {
|
||||||
var reqBody []reflect.Value
|
var reqBody []reflect.Value
|
||||||
if t.NumIn() == 0 {
|
if t.NumIn() == 1 {
|
||||||
reqBody = append(reqBody, reflect.ValueOf(req.Body()))
|
reqBody = append(reqBody, reflect.ValueOf(req.Body()))
|
||||||
}
|
}
|
||||||
response = reflect.ValueOf(r.Response).Call(reqBody)[0].Interface()
|
response = reflect.ValueOf(r.Response).Call(reqBody)[0].Interface()
|
||||||
|
@ -18,12 +18,18 @@ func TestClient(t *testing.T) {
|
|||||||
{Endpoint: "Foo.Fail", Error: errors.InternalServerError("go.mock", "failed")},
|
{Endpoint: "Foo.Fail", Error: errors.InternalServerError("go.mock", "failed")},
|
||||||
{Endpoint: "Foo.Func", Response: func() string { return "string" }},
|
{Endpoint: "Foo.Func", Response: func() string { return "string" }},
|
||||||
{Endpoint: "Foo.FuncStruct", Response: func() *TestResponse { return &TestResponse{Param: "aparam"} }},
|
{Endpoint: "Foo.FuncStruct", Response: func() *TestResponse { return &TestResponse{Param: "aparam"} }},
|
||||||
|
{Endpoint: "Foo.FuncWithReqBody", Response: func(req interface{}) string {
|
||||||
|
if req.(map[string]string)["foo"] == "bar" {
|
||||||
|
return "string"
|
||||||
|
}
|
||||||
|
return "wrong"
|
||||||
|
}},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := NewClient(Response("go.mock", response))
|
c := NewClient(Response("go.mock", response))
|
||||||
|
|
||||||
for _, r := range response {
|
for _, r := range response {
|
||||||
req := c.NewRequest("go.mock", r.Endpoint, map[string]interface{}{"foo": "bar"})
|
req := c.NewRequest("go.mock", r.Endpoint, map[string]string{"foo": "bar"})
|
||||||
var rsp interface{}
|
var rsp interface{}
|
||||||
|
|
||||||
err := c.Call(context.TODO(), req, &rsp)
|
err := c.Call(context.TODO(), req, &rsp)
|
||||||
@ -33,6 +39,20 @@ func TestClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t.Log(rsp)
|
t.Log(rsp)
|
||||||
|
if r.Endpoint == "Foo.FuncWithReqBody" {
|
||||||
|
req := c.NewRequest("go.mock", r.Endpoint, map[string]string{"foo": "wrong"})
|
||||||
|
var rsp interface{}
|
||||||
|
|
||||||
|
err := c.Call(context.TODO(), req, &rsp)
|
||||||
|
|
||||||
|
if err != r.Error {
|
||||||
|
t.Fatalf("Expecter error %v got %v", r.Error, err)
|
||||||
|
}
|
||||||
|
if rsp.(string) != "wrong" {
|
||||||
|
t.Fatalf("Expecter response 'wrong' got %v", rsp)
|
||||||
|
}
|
||||||
|
t.Log(rsp)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user