Go 接口嵌套组合的使用方法
package rocketimport (
"code.byted.org/ecom/compass_data_index/driver"
"code.byted.org/ecom/compass_data_index/service"
)type IRocketFetcher interface {
service.BasicInfoService
driver.INavigatorDriver
}type RocketFetcher struct {
service.BasicInfoService
driver.INavigatorDriver
}func NewRocketFetcher() *RocketFetcher {
return &RocketFetcher{
&service.BasicInfoServiceImpl{},
&driver.NavigatorDriver{},
}
}
gomock 测试 stub 代码生成 使用 -aux_files 指定内嵌接口的 pkg1=path1,pkg2=path2. 需要注意的是, pkg1 / pkg2 不能跟被测接口的包相同!
(may be mockgen's assumptions!)
-aux_files rocket=service/basic_info_service.go,rocket=driver/navigator_driver.go
【golang|Go 接口嵌套组合的使用方法 & gomock 测试 stub 代码生成】一个 Makefile 的例子:
PROJECTNAME=$(shell basename "$(PWD)")
all: format testformat:
find . -name '*.go' | xargs goimports -wtest:
go test -v -cover ./...#test report
test_report:
go test -v -cover -json ./...| go-test-report -t "Test Report"#gomock
mockgen_navigator_driver:
mockgen -source=./driver/navigator_driver.go -destination ./driver/navigator_driver_mock.go -package drivermockgen_rocket_fetcher:
mockgen -source=./rocket/rocket_driver.go -destination ./rocket/rocket_driver_mock.go -package rocket -aux_files rocket=service/basic_info_service.go,rocket=driver/navigator_driver.gomockgen_basic_info_service:
mockgen -source=./service/basic_info_service.go -destination ./service/basic_info_service_mock.go -package service
推荐阅读
- Java每日一练|用Java定义圆类并调用方法
- JavaSE系列详解|Java中的方法引用--【基本使用详解】
- JAVA知识点|java多线程(模拟银行系统存钱2)
- Python(算法|Python:递归算法(基础))
- 架构风格、架构模式和设计模式之间的区别
- JavaScript|JavaScript笔记(全)
- SpringMVC|软件工程专业电商网站毕业论文答辩实录(基于SSM+VUE前后端分离的 “依伴汉服”网)
- SpringMVC|毕设|基于SSM+jsp+echarts的疫情地图系统系统(已经开源)
- 项目实践|【Java实战项目】图书管理系统(基于数据库)