第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何斷言與擔(dān)架/作證/模擬斷言呼叫的部分匹配?

如何斷言與擔(dān)架/作證/模擬斷言呼叫的部分匹配?

Go
慕斯709654 2022-09-12 20:23:31
請(qǐng)考慮 Go 中的此單元測(cè)試文件。我正在使用 github.com/stretchr/testify/mock 包。type Person struct {Name string; Age int}type Doer struct { mock.Mock }func (d *Doer) doWithThing(arg Person) {    fmt.Printf("doWithThing %v\n", arg)    d.Called(arg)}func TestDoer(t *testing.T) {    d := new(Doer)    d.On("doWithThing", mock.Anything).Return()    d.doWithThing(Person{Name: "John", Age: 7})        // I don't care what Age was passed. Only Name    d.AssertCalled(t, "doWithThing", Person{Name: "John"})}此測(cè)試失敗,因?yàn)楫?dāng)我沒(méi)有通過(guò)年齡時(shí)在比較中使用。我明白了,但我想知道,我如何斷言通過(guò)的部分論點(diǎn)?我希望這個(gè)測(cè)試通過(guò)任何測(cè)試,只要testifyAge: 0AgeName = John
查看完整描述

1 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

使用模擬。匹配。

簡(jiǎn)而言之,它用(未導(dǎo)出)包裝任意匹配器函數(shù):mock.argumentMatcher

參數(shù)Matcher 執(zhí)行自定義參數(shù)匹配,返回參數(shù)是否與期望夾具函數(shù)匹配。

特別是,的論點(diǎn)是:mock.MatchedBy

[...]接受返回 bool 的單個(gè)參數(shù)(預(yù)期類(lèi)型)的函數(shù)

因此,您可以按如下方式使用它:

personNameMatcher := mock.MatchedBy(func(p Person) bool {

    return p.Name == "John"

})

d.AssertCalled(t, "doWithThing", personNameMatcher)


查看完整回答
反對(duì) 回復(fù) 2022-09-12
  • 1 回答
  • 0 關(guān)注
  • 80 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)