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  }