package client import ( "fmt" "testing" "github.com/micro/go-micro/registry" "github.com/micro/go-micro/registry/mock" "github.com/micro/go-micro/selector" "golang.org/x/net/context" ) func TestCallWrapper(t *testing.T) { var called bool id := "test.1" service := "test.service" method := "Test.Method" host := "10.1.10.1" port := 8080 address := "10.1.10.1:8080" wrap := func(cf CallFunc) CallFunc { return func(ctx context.Context, addr string, req Request, rsp interface{}, opts CallOptions) error { called = true if req.Service() != service { return fmt.Errorf("expected service: %s got %s", service, req.Service()) } if req.Method() != method { return fmt.Errorf("expected service: %s got %s", method, req.Method()) } if addr != address { return fmt.Errorf("expected address: %s got %s", address, addr) } // don't do the call return nil } } r := mock.NewRegistry() c := NewClient( Registry(r), WrapCall(wrap), ) c.Options().Selector.Init(selector.Registry(r)) r.Register(®istry.Service{ Name: service, Version: "latest", Nodes: []*registry.Node{ ®istry.Node{ Id: id, Address: host, Port: port, }, }, }) req := c.NewRequest(service, method, nil) if err := c.Call(context.Background(), req, nil); err != nil { t.Fatal("call wrapper error", err) } if !called { t.Fatal("wrapper not called") } }