文章同步更新於https://kevinyay945.com/smart-home-tutorial/025
因为接下来如果要进行测试,势必得在建立每个interface的时候都要新增一次mock interface,而且未来如果这个interface要扩增的时候,又得再重新输入一次指令,所以在gomock官网中有提到,如果想要批次建立mock file,可以透过
go generate
来进行批量产生
go generate的原理是透过注解的方式,来执行後面的语法
所以可以搭配上mockgen一起使用
就可以如下
//go:generate mockgen -destination=mock/command.go -package=modelMock . ICommand
type ICommand interface {
Get() ([]schema.Command, error)
Save(input *schema.Command) (schema.Command, error)
UpdateOne(commandUuid string, command *schema.Command) (schema.Command, error)
Delete(commandUuid string) error
}
然後到根目录执行
go generate ./...
而这个./...的意思是
./ => 当前目录
... =>下面目录的所有字串,以及所有路径
https://stackoverflow.com/questions/28031603/what-do-three-dots-mean-in-go-command-line-invocations
只要这样做,就可以将所有资料夹中档案有go generate的都跑一遍了
那如果未来会忘记这段指令怎麽办呢
这时候,就用到另一个小工具
Makefile
这个工具可以帮我们把很多系统上的使令统一放到一个档案中,然後透过
make xxxxx
来执行
那这个档案写法如下
.PHONY: generate run
run:
go run .
generate:
go generate ./...
然後在你存放Makefile的路径下执行
make generate
他就会帮你执行
go generate ./...
至於.PHONY是什麽呢
因为这个Makefile除了执行指令,其实主要是拿来做compile用的,所以会建议,如果你在执行的指令,如果她就只是指令,而不是档案的话,就把它放到.PHONY後面,因为放在.PHONY里的内容,Makefile在执行的时候,才会去辨别他有没有改变
举个例子
如果刚好有个档案叫做generate
然後你第一次执行
make generate
他会去正常实行 go generate ./...
但第二次执行时
因为generate没有在.PHONY中,所以Makefile在判断的时候,就会觉得你的generate没有变动,就不会去执行go generate ./...了
详细的内容可以到网路上查看更多资料,我这边就仅用在执行指令
附上这次的comment纪录
https://github.com/kevinyay945/smart-home-backend/tree/v0.5.2
<<: 撰写http request 的测试(golang)(Day24)
原本是计画要2020换工作,结果因为疫情的关系打算延後了一年在开始投履历跟面试~ 时间线 2021 ...
今天我们要来了解 javascript FP 中的 functors 概念。 他的概念就是类似 OO...
写在前面 placeholder for d10 placeholder for d10 place...
接下来从今天开始,会花个几天的时间带大家来实作一下关於对 AWS Service 服务的对接,而今天...
大家好,今天来教大家如何配置文件。 首先 首先,先确认您已经将系统更新到Big Sur以上(避免出现...