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
}