Compare commits
No commits in common. "v3" and "master" have entirely different histories.
24
mock.go
24
mock.go
@ -61,7 +61,6 @@ type ExpectedRequest struct {
|
|||||||
delay time.Duration
|
delay time.Duration
|
||||||
rsp interface{}
|
rsp interface{}
|
||||||
req client.Request
|
req client.Request
|
||||||
rspct string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WillDelayFor allows to specify duration for which it will delay result. May
|
// WillDelayFor allows to specify duration for which it will delay result. May
|
||||||
@ -78,9 +77,8 @@ func (e *ExpectedRequest) WillReturnError(err error) *ExpectedRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WillReturnResponse allows to set a response for expected client.Call
|
// WillReturnResponse allows to set a response for expected client.Call
|
||||||
func (e *ExpectedRequest) WillReturnResponse(ct string, rsp interface{}) *ExpectedRequest {
|
func (e *ExpectedRequest) WillReturnResponse(rsp interface{}) *ExpectedRequest {
|
||||||
e.rsp = rsp
|
e.rsp = rsp
|
||||||
e.rspct = ct
|
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,6 +133,11 @@ func (c *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
ct = options.ContentType
|
ct = options.ContentType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cf, err := c.newCodec(ct)
|
||||||
|
if err != nil {
|
||||||
|
return errors.BadRequest("go.micro.client", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
for _, e := range c.expected {
|
for _, e := range c.expected {
|
||||||
er, ok := e.(*ExpectedRequest)
|
er, ok := e.(*ExpectedRequest)
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -163,10 +166,6 @@ func (c *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
src := er.req.Body()
|
src := er.req.Body()
|
||||||
switch reqbody := er.req.Body().(type) {
|
switch reqbody := er.req.Body().(type) {
|
||||||
case []byte:
|
case []byte:
|
||||||
cf, err := c.newCodec(ct)
|
|
||||||
if err != nil {
|
|
||||||
return errors.BadRequest("go.micro.client", err.Error())
|
|
||||||
}
|
|
||||||
src, err = rutil.Zero(req.Body())
|
src, err = rutil.Zero(req.Body())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = cf.Unmarshal(reqbody, src)
|
err = cf.Unmarshal(reqbody, src)
|
||||||
@ -174,6 +173,10 @@ func (c *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.BadRequest("go.micro.client", err.Error())
|
return errors.BadRequest("go.micro.client", err.Error())
|
||||||
}
|
}
|
||||||
|
case client.Request:
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
return errors.BadRequest("go.micro.client", "unknown request passed: %v", reqbody)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !reflect.DeepEqual(req.Body(), src) {
|
if !reflect.DeepEqual(req.Body(), src) {
|
||||||
@ -186,13 +189,6 @@ func (c *MockClient) Call(ctx context.Context, req client.Request, rsp interface
|
|||||||
|
|
||||||
switch rspbody := er.rsp.(type) {
|
switch rspbody := er.rsp.(type) {
|
||||||
case []byte:
|
case []byte:
|
||||||
if er.rspct != "" {
|
|
||||||
ct = er.rspct
|
|
||||||
}
|
|
||||||
cf, err := c.newCodec(ct)
|
|
||||||
if err != nil {
|
|
||||||
return errors.BadRequest("go.micro.client", err.Error())
|
|
||||||
}
|
|
||||||
if err = cf.Unmarshal(rspbody, rsp); err != nil {
|
if err = cf.Unmarshal(rspbody, rsp); err != nil {
|
||||||
return errors.BadRequest("go.micro.client", err.Error())
|
return errors.BadRequest("go.micro.client", err.Error())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user