github.com/brycereitano/goa@v0.0.0-20170315073847-8ffa6c85e265/goatest/testing.go (about) 1 package goatest 2 3 import ( 4 "bytes" 5 "io" 6 "log" 7 8 "github.com/goadesign/goa" 9 "github.com/goadesign/goa/middleware" 10 ) 11 12 // TInterface is an interface for go's testing.T 13 type TInterface interface { 14 Errorf(format string, args ...interface{}) 15 Fatalf(format string, args ...interface{}) 16 } 17 18 // ResponseSetterFunc func 19 type ResponseSetterFunc func(resp interface{}) 20 21 // Encode implements a dummy encoder that returns the value being encoded 22 func (r ResponseSetterFunc) Encode(v interface{}) error { 23 r(v) 24 return nil 25 } 26 27 // Service provide a general goa.Service used for testing purposes 28 func Service(logBuf *bytes.Buffer, respSetter ResponseSetterFunc) *goa.Service { 29 s := goa.New("test") 30 logger := log.New(logBuf, "", log.Ltime) 31 s.WithLogger(goa.NewLogger(logger)) 32 s.Use(middleware.LogRequest(true)) 33 s.Use(middleware.LogResponse()) 34 newEncoder := func(io.Writer) goa.Encoder { 35 return respSetter 36 } 37 s.Decoder.Register(goa.NewJSONDecoder, "*/*") 38 s.Encoder.Register(newEncoder, "*/*") 39 return s 40 }