geek 7bd2c6403c service interface added
reflect method call refactoring
2017-06-05 19:46:02 +09:00

121 lines
2.5 KiB
Go

package gateway
import (
"testing"
"reflect"
"github.com/stretchr/testify/assert"
"encoding/json"
"github.com/golang/glog"
"fmt"
)
func TestServices(t *testing.T) {
InitServices()
meb, _ := g_services["Member"]
m := make(map[string]string)
m["email"] = "geek@loafle.com"
m["pw"] = "qwer5795"
convertParam(meb, m)
//val := []reflect.Value{reflect.ValueOf(meb.(*proxy.MemberService))}
va := reflect.ValueOf(meb).MethodByName("Regist").Call([]reflect.Value{})
//reflect.ValueOf(meb).MethodByName("Read").Call(reflect.ValueOf(meb))
assert.Equal(t, 0, len(va))
}
func TestServiceParam(t *testing.T) {
InitServices()
meb, _ := g_services["Member"]
m := make(map[string]string)
m["email"] = "geek@loafle.com"
m["pw"] = "qwer5795"
paramStr, err := json.Marshal(m)
if err != nil {
glog.Fatal("Json Marshal Failed : ", err.Error())
}
err = json.Unmarshal(paramStr, meb)
if err != nil {
glog.Fatal("Json Unmarshal Failed : ", err.Error())
}
//assert.ObjectsAreEqual(proxy.MemberService{}, meb)
}
//
//type Member struct {
// Email string `json:"email"`
// Password string `json:"password"`
//}
//
//type MemberService struct {
// ServiceName string `json:"serviceName"`
// MethodName string `json:"methodName"`
// Param *Member `json:"param"`
//}
func TestComvertJson(t *testing.T) {
//res := `{"serviceName":"Member","methodName":"Regist","param":{"email":"geek@loafle.com","password":"qwer5795"}}`
InitServices()
meb, _ := g_services["Member"]
mem := meb.GetModel()
m := make(map[string]string)
m["email"] = "geek@loafle.com"
m["password"] = "qwer5795"
//ss := member.NewMemberService()
convertParam(mem, m)
methodName := reflect.ValueOf(meb).MethodByName("Regist")
in := make([]reflect.Value, methodName.Type().NumIn())
for i := 0; i < methodName.Type().NumIn(); i++{
temp := methodName.Type().In(i)
in[i] = reflect.ValueOf(mem)
fmt.Println(temp)
}
va := methodName.Call(in)[0].String()
fmt.Println(va)
}
//func TestReflectType(t *testing.T) {
//ss := &MemberService{}
////t1 := reflect.ValueOf(ss.Param).Elem()
//
//ms1 := reflect.New(reflect.TypeOf(ss.Param)).Elem().Type()
//
//fmt.Println(ms1)
////ss.Param = ms1
////ss.Param.Email = "ddd"
////fmt.Println(ss.Param.Email)
//ms := reflect.New(reflect.ValueOf(ss.Param).Type()).Elem()
//fmt.Printf("created a [%T]\n", reflect.ValueOf(ms).Type())
//}
func TestReflectType(t *testing.T) {
InitServices()
//serviceName, _ := g_services["Member"]
//reflect.TypeOf(serviceName).Elem().(member.MemberService)
}