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