golang单元测试之mock

本文介绍了在Golang中使用Mock进行单元测试的情况,包括处理复杂函数内部调用、未实现的依赖以及数据敏感的函数。通过讲解gomock库和mockgen工具,阐述了如何生成mock代码以及在测试中应用mock对象,确保被测试函数按照预设行为执行。文中提到了mockgen的source和reflect两种工作模式,并提供了官方文档链接帮助读者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搞单元测试,如果碰到这些情况:
1,一个函数,内部包含了很多并且很深的调用,但是如果单单测这个函数,其实实现的功能很简单。
2,一个函数,包含了其他还未实现的调用。
3,函数内部对数据的要求极为苛刻。

那么这时候就可以考虑使用mock来处理。

mock,简而言之就是可以通过注入我们所期望返回的数据,或者我们所期望传递的参数,来避免上面那些情况,其原理则是通过反射来实现。

这次就来看看golang的mock,gomock
gomock是go官方提供的mock解决方案,主要分为两部分:gomock库和mock代码生成工具mockgen。

使用举例:

package metal

type Imetal interface {
    GetName() string
    SetName(string) string
}

type Metal struct {
    Name string
    Exchange string
}

func (self Metal) GetName() string {
    if self.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值