Contents

kratos

Contents

Go Kratos测试

1、测试repo层方法


glogger "gorm.io/gorm/logger"

var (
	ctx = context.Background()
	db  *gorm.DB
	p   = NewSugarRepo(log.DefaultLogger)
	bc  conf.Bootstrap
)

func init() {
	bcInit()
	var err error
	var dns = bc.Data.Database.Source
	db, err = gorm.Open(postgres.Open(dns), &gorm.Config{
		Logger: glogger.Default.LogMode(glogger.Info),
	})
	if err != nil {
		panic(err)
	}

}

func bcInit() {
	c := config.New(
		config.WithSource(
			file.NewSource("../../../../configs"),
		),
	)
	defer c.Close()

	if err := c.Load(); err != nil {
		panic(err)
	}
	if err := c.Scan(&bc); err != nil {
		panic(err)
	}
}

2、测试biz层


var (
	ctx = context.Background()
	db  *gorm.DB
	bc  conf.Bootstrap
	us *SugarUsecase
)

func init() {
	bcInit()
	var err error
	var dns = bc.Data.Database.Source
	db, err = gorm.Open(postgres.Open(dns), &gorm.Config{
		Logger: glogger.Default.LogMode(glogger.Info),
	})
	if err != nil {
		panic(err)
	}
	// 不够的参数可以用nil
	us = NewSugarUsecase(logger, dataData, SugarRepo, nil)


}

func bcInit() {
	c := config.New(
		config.WithSource(
			file.NewSource("../../../../configs"),
		),
	)
	defer c.Close()

	if err := c.Load(); err != nil {
		panic(err)
	}
	if err := c.Scan(&bc); err != nil {
		panic(err)
	}
}

3、测试services层


const (
	address     = "localhost:9000"
	defaultName = "world"
)

var (
	md  = map[string]string{"TOKEN": "HELLO"}
	p   pb.SugarClient
	ctx context.Context
)


func NewGrpcConn(endpoint string, mdData map[string]string) (ctx context.Context, conn *grpc.ClientConn, err error) {
	ctx = metadata.NewIncomingContext(context.Background(), metadata.New(mdData))
	conn, err = kgrpc.DialInsecure(
		ctx,
		kgrpc.WithEndpoint(endpoint),
		kgrpc.WithMiddleware(
			recovery.Recovery(),
			tracing.Client(),
		),
		kgrpc.WithTimeout(time.Second*10),
	)
	return ctx, conn, err
}


func init() {
	ctx2, conn, err := NewGrpcConn(address, md)
	if err != nil {
		slog.Info("init failed", "err", err)
		os.Exit(5)
	}
	p = pb.NewSugarClient(conn)
	ctx = ctx2
}