package micro import ( "sync" "testing" "github.com/micro/go-micro/registry/mock" proto "github.com/micro/go-micro/server/debug/proto" "golang.org/x/net/context" ) func TestFunction(t *testing.T) { var wg sync.WaitGroup wg.Add(1) // create service fn := NewFunction( Name("test.function"), Registry(mock.NewRegistry()), AfterStart(func() error { wg.Done() return nil }), ) // we can't test fn.Init as it parses the command line // fn.Init() go func() { // wait for start wg.Wait() // test call debug req := fn.Client().NewRequest( "test.function", "Debug.Health", new(proto.HealthRequest), ) rsp := new(proto.HealthResponse) err := fn.Client().Call(context.TODO(), req, rsp) if err != nil { t.Fatal(err) } if rsp.Status != "ok" { t.Fatalf("function response: %s", rsp.Status) } }() // run service fn.Run() }