Skip to content

cit965/kubecit

Repository files navigation

kubecit

多云管理平台,支持多云厂商的云资源管理发现和同步,支持k8s多集群管理

前置知识

启动项目

在根目录执行 make init 安装 wire proto 等依赖

在根目录执行 make run 启动服务

在根目录执行 make test 进行单元测试,要求本地环境变量设置 docker endpoint , 例子如下

export DOCKER_HOST=unix:///Users/z/.docker/run/docker.sock & make test

数据库

服务启动会通过 ent 自动创建表

  1. 想要添加一张 clusters 表,可以执行如下命令:
go run -mod=mod entgo.io/ent/cmd/ent new Cluster
  1. 在 scheme/cluster.go 文件中添加表字段如下:
// Fields of the Cluster.
func (Cluster) Fields() []ent.Field {
	return []ent.Field{
		field.String("kubeconfig").
			Default("unknown"),
	}
}
  1. 执行如下命令,生成 CRUD 代码
 go generate ./ent

mock 测试

详细文档

  1. 在你需要mock掉的inteface上加一下注解
//go:generate mockgen -destination=../mocks/mrepo/user.go -package=mrepo . UserRepo
  1. 在 biz 目录下执行以下命令,internal/mocks 目录下生成 mock 代码
mockgen -destination=../mocks/mrepo/user.go -package=mrepo . UserRepo
  1. 在你需要替换的地方使用如下:
	BeforeEach(func() {
	    // 使用 gomock 替换 userRepo
		mUserRepo = mrepo.NewMockUserRepo(ctl)
		userCase = biz.NewUserUsecase(mUserRepo, nil)
	})

	It("Create", func() {
		info := &biz.User{
			Username: "xxx",
			Password: "admin123456",
		}
		// 设置返回值
		mUserRepo.EXPECT().Register(ctx, gomock.Any()).Return(info, nil)
		l, err := userCase.RegisterUser(ctx, info)
		Ω(err).ShouldNot(HaveOccurred())
		Ω(err).ToNot(HaveOccurred())
		Ω(l.Username).To(Equal("xxx"))
	})

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •