golang 打桩,mock 数据怎么玩?

-destination string

Output file; defaults to stdout.

-exec_only string

(reflect mode) If set, execute this reflection program.

-imports string

(source mode) Comma-separated name=path pairs of explicit imports to use.

-mock_names string

Comma-separated interfaceName=mockName pairs of explicit mock names to use. Mock names default to ‘Mock’+ interfaceName suffix.

-package string

Package of the generated code; defaults to the package of the input with a ‘mock_’ prefix.

-prog_only

(reflect mode) Only generate the reflection program; write it to stdout and exit.

-self_package string

The full package import path for the generated code. The purpose of this flag is to prevent import cycles in the generated code by trying to include its own package. This can happen if the mock’s package is set to one of its inputs (usually the main one) and the output is stdio so mockgen cannot detect the final output package. Setting this flag will then tell mockgen which import to exclude.

-source string

(source mode) Input Go source file; enables source mode.

-version

Print version.

-write_package_comment

Writes package documentation comment (godoc) if true. (default true)

2021/10/30 16:43:25 Expected exactly two arguments

一般用的比较多的就是

  • -source 源文件

  • -destination 目标文件

  • -imports 依赖的需要 import 的包

  • -build_flags 传递给build工具的参数

  • -aux_files 接口文件不止一个文件时附加文件

  • -package 设置 mock 文件的包名,不设置的话,mock 文件的包名默认是 mock_输入文件的包名

通过上述指令生成的 mock 文件如下:

  • NewMockMyFunc

创建一个新的 mock 实例

  • EXPECT

允许调用者指示预期用途的对象

  • GetInfo

mock 的基础方法,也就是我们需要 mock 的方法

具体的如何使用

=====================================================================

myuser_test.go

  • myuser.go 对应的单测文件 , 使用了 mock 的方式

package myfunc

import (

“fmt”

“testing”

gomock “github.com/golang/mock/gomock”

)

func Test_getUser(t *testing.T) {

mockCtl := gomock.NewController(t)

mockMyFunc := NewMockMyFunc(mockCtl)

mockMyFunc.EXPECT().GetInfo().Return(“xiaomotong”)

v := getUser(mockMyFunc)

if v == “xiaomotong” {

fmt.Println(“get user right!”)

} else {

t.Error(“get error user”)

}

}

看到上述单测文件,可以还不是特别明白区别,我们来看看不用 mock 的时候,我们会是如何去写单测呢

package myfunc

import (

“fmt”

“testing”

gomock “github.com/golang/mock/gomock”

)

func Test_getUser(t *testing.T) {

m := myfunc.CreateMyFunc() // 也就是说需要自己创建一个对象

v := getUser(m)

if v == “xiaomotong” {

fmt.Println(“get user right!”)

} else {

t.Error(“get error user”)

}

}

m := myfunc.CreateMyFunc() 看到上述这一句话,是创建对应的对象,再将该对象作为参数传入到 getUser 函数中,正常情况下这样做单测没有问题

但是如果这个时候创建 MyFunc 对象由于对外部还有依赖导致还没有编码好,可是也不能阻塞我们的单元测试

这个时候使用最上面的 mock 方案就显得尤为重要,可以使用 mock 的方式,mock 一个 MyFunc 对象,并设置好返回值即可完成,如:

mockCtl := gomock.NewController(t)

mockMyFunc := NewMockMyFunc(mockCtl)

mockMyFunc.EXPECT().GetInfo().Return(“xiaomotong”)

执行上述代码结果如下:

go test

get user right!

PASS

ok mygomock/myfunc 0.427s

感兴趣的朋友可以使用起来,用的多了就会更加熟悉

使用 gomock 的好处?

============================================================================

  • gomock 实现了较为完整的基于 interface 的 Mock 功能,能够与 Golang 内置的 testing包良好集成,也能用于其它的测试环境中

  • 学习成本低,很快就能上手

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。

这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
在这里插入图片描述

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
[外链图片转存中…(img-oRmXrQG0-1712574762760)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值