請(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)
- 1 回答
- 0 關(guān)注
- 80 瀏覽
添加回答
舉報(bào)
0/150
提交
取消