栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Go 中的模拟函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go 中的模拟函数

就我个人而言,我不使用

gomock
(或任何与此相关的模拟框架;没有它,在 Go 中进行模拟非常容易)。我要么将依赖项
downloader()
作为参数传递给函数,要么
downloader()
在类型上创建一个方法,该类型可以保存
get_page
依赖项:

方法一:
get_page()
作为参数传递
downloader()

type PageGetter func(url string) stringfunc downloader(pageGetterFunc PageGetter) {    // ...    content := pageGetterFunc(base_URL)    // ...}

主要的:

func get_page(url string) string {  }func main() {    downloader(get_page)}

测试:

func mock_get_page(url string) string {    // mock your 'get_page()' function here}func TestDownloader(t *testing.T) {    downloader(mock_get_page)}

方法 2:
download()
创建一个类型的方法
Downloader

如果您不想将依赖项作为参数传递,您还可以创建

get_page()
一个类型的成员,并创建
download()
一个该类型的方法,然后可以使用
get_page

type PageGetter func(url string) stringtype Downloader struct {    get_page PageGetter}func NewDownloader(pg PageGetter) *Downloader {    return &Downloader{get_page: pg}}func (d *Downloader) download() {    //...    content := d.get_page(base_URL)    //...}

主要的:

func get_page(url string) string {  }func main() {    d := NewDownloader(get_page)    d.download()}

测试:

func mock_get_page(url string) string {    // mock your 'get_page()' function here}func TestDownloader() {    d := NewDownloader(mock_get_page)    d.download()}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/623853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号