欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go mock模擬接口的實現(xiàn)

 更新時間:2023年06月21日 08:59:45   作者:Sahm5k  
本文主要介紹了go mock模擬接口的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

簡介

mock翻譯過來是‘模擬’的意思,也就是模擬接口返回的信息,用已有的信息替換接口返回的信息,從而提供仿真環(huán)境,實現(xiàn)模擬數(shù)據(jù)下的功能測試;

在多人合作編碼時,你寫的一個函數(shù)func DoSth(People)用到了別人寫的People接口。此時你的函數(shù)已經(jīng)寫好了,但是實現(xiàn)People接口的程序員還在磨蹭,而這時你想要測試func DoSth()是否正確運行,就需要gomock接口模擬技術。

導包

安裝gomock包以及mockgen(mock代碼生成器)

 go get -u github.com/golang/mock/gomock
 go install github.com/golang/mock/mockgen

使用步驟

1.構造代碼

type People interface {
?? ?GetName() string
?? ?GetAge() int
}
func GetPeopleInfo(people People) {
?? ?//調(diào)用接口
?? ?println("name:", people.GetName(), "age:", people.GetAge())
}

示例構造了一個函數(shù)GetPeopleInfo(People),調(diào)用了People接口。

2.使用mockgen生成mock代碼

mockgen主要有兩種使用方式:

1.通過source構建:從源文件生成 mock 接口(通過 -source 啟用)

mockgen -source=foo.go [other options]

2.通過reflect構建:通過使用反射程序來生成 mock 接口。它通過傳遞兩個非標志參數(shù)來啟用:導入路徑和逗號分隔的接口列表

mockgen database/sql/driver Conn,Driver

具體參數(shù)可以在命令行輸入mockgen進行查看。

本文中使用2進行mock代碼的構建

代碼結(jié)構:

Test
├── gomock2
       └── db.go

使用的mockgen命令:

mockgen  -destination db_mock.go -package gomock2 Test/gomock2 People

-destination db_mock.go:表明生成的mock代碼存放在db_mock.go
-package gomock2:生成代碼所屬包名為gomock2
Test/gomock2 People :對Test/gomock2下的People接口進行模擬

成功后會生成db_mock.go文件。

3.建立測試用例

func TestGetFromDB(t *testing.T) {
??? ?//創(chuàng)建mock控制器,控制器
?? ?controller := gomock.NewController(t)
?? ?defer controller.Finish()//觸發(fā)最后的斷言
?? ?mockPeople := NewMockPeople(controller)
?? ?mockPeople.EXPECT().GetName().Return("yi")
?? ?mockPeople.EXPECT().GetAge().Return(18).Times(1) //預計返回18并被調(diào)用1次
?? ?//調(diào)用測試方法?
?? ?GetPeopleInfo(mockPeople)
}

主要有下面幾個步驟:
1.創(chuàng)建mock控制器,控制器定義了mock對象的作用域、生命周期、期待值。
2. defer controller.Finish():觸發(fā)斷言,判斷結(jié)果是否符合預期。
3. 創(chuàng)建Mock對象:Mock對象實現(xiàn)了要模擬的接口。
4. 設計預期值,接口的輸入、返回。
5. 調(diào)用測試方法。

go:generate生成mock代碼

在interface所對應的go文件中加入注釋:

//go:generate mockgen  -destination db_mock.go -package gomock2 Test/gomock2 People

隨后在命令行的當前目錄下執(zhí)行下面語句就能自動生成mock代碼

go generate

或者在項目根目錄輸入,執(zhí)行當前項目中所有go:generate注釋表示的內(nèi)容。

go generate ./...

到此這篇關于go mock模擬接口的實現(xiàn)的文章就介紹到這了,更多相關go mock模擬接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文帶你了解Go語言fmt標準庫輸入函數(shù)的使用

    一文帶你了解Go語言fmt標準庫輸入函數(shù)的使用

    這篇文章主要為大家詳細介紹了Go語言中?fmt?標準庫輸入函數(shù)的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • 詳解如何利用Golang泛型提高編碼效率

    詳解如何利用Golang泛型提高編碼效率

    Golang的泛型已經(jīng)出來有一段時間了,大家應該或多或少對它有所了解。雖然Golang的泛型在功能上確實比較簡單,而且確實可能會增加代碼的復雜度,過度使用可能還會降低代碼可讀性。本文就來介紹一下Golang泛型的相關知識吧
    2023-04-04
  • Go語言如何實現(xiàn)TCP通信詳解

    Go語言如何實現(xiàn)TCP通信詳解

    go里面實現(xiàn)tcp沒有像之前寫的C++那些那么麻煩,在C++里面要先創(chuàng)建套接字,然后綁定ip地址,go里面直接就一個函數(shù)建立套接字,然后在進行通信就可以了,下面這篇文章主要給大家介紹了關于Go語言如何實現(xiàn)TCP通信的相關資料,需要的朋友可以參考下
    2023-01-01
  • go日志系統(tǒng)logrus顯示文件和行號的操作

    go日志系統(tǒng)logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Golang 刪除文件并遞歸刪除空目錄的操作

    Golang 刪除文件并遞歸刪除空目錄的操作

    這篇文章主要介紹了Golang 刪除文件并遞歸刪除空目錄的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言中JSON文件的讀寫操作

    Go語言中JSON文件的讀寫操作

    本文主要介紹了Go語言JSON文件的讀寫操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 深入解析Go template模板使用詳解

    深入解析Go template模板使用詳解

    這篇文章主要介紹了深入解析Go template模板使用詳解,需要的朋友可以參考下
    2022-04-04
  • Golang學習之map的用法詳解

    Golang學習之map的用法詳解

    在Golang(又稱Go語言)中,map是一種非常有用的數(shù)據(jù)結(jié)構,所以這篇文章小編就來帶大家一起深入了解一下map的用法,感興趣的小伙伴可以了解一下
    2023-06-06
  • GO使用socket和channel實現(xiàn)簡單控制臺聊天室

    GO使用socket和channel實現(xiàn)簡單控制臺聊天室

    今天小編給大家分享一個簡單的聊天室功能,聊天室主要功能是用戶可以加入離開聊天室,實現(xiàn)思路也很簡單明了,下面小編給大家?guī)砹送暾a,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 一文帶大家了解Go語言中的內(nèi)聯(lián)優(yōu)化

    一文帶大家了解Go語言中的內(nèi)聯(lián)優(yōu)化

    內(nèi)聯(lián)優(yōu)化是一種常見的編譯器優(yōu)化策略,通俗來講,就是把函數(shù)在它被調(diào)用的地方展開,這樣可以減少函數(shù)調(diào)用所帶來的開銷,本文主要為大家介紹了Go中內(nèi)聯(lián)優(yōu)化的具體使用,需要的可以參考下
    2023-05-05

最新評論