前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 接口嵌套组合的使用方法 & gomock 测试 stub 代码生成

Go 接口嵌套组合的使用方法 & gomock 测试 stub 代码生成

作者头像
一个会写诗的程序员
发布2022-06-05 10:49:14
8350
发布2022-06-05 10:49:14
举报
文章被收录于专栏:一个会写诗的程序员的博客

Go 接口嵌套组合的使用方法

代码语言:javascript
复制
package rocket

import (
    "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!)

代码语言:javascript
复制
-aux_files rocket=service/basic_info_service.go,rocket=driver/navigator_driver.go

一个 Makefile 的例子:

代码语言:javascript
复制
PROJECTNAME=$(shell basename "$(PWD)")
all: format test

format:
    find . -name '*.go' | xargs goimports -w

test:
    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 driver

mockgen_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.go

mockgen_basic_info_service:
    mockgen -source=./service/basic_info_service.go -destination ./service/basic_info_service_mock.go -package service
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go 接口嵌套组合的使用方法
  • gomock 测试 stub 代码生成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档