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

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

監(jiān)聽(tīng)調(diào)用 Golang 中另一個(gè)結(jié)構(gòu)使用的結(jié)構(gòu)函數(shù)

監(jiān)聽(tīng)調(diào)用 Golang 中另一個(gè)結(jié)構(gòu)使用的結(jié)構(gòu)函數(shù)

Go
小唯快跑啊 2023-03-29 15:23:46
所以我是 Golang 中模擬結(jié)構(gòu)和函數(shù)的初學(xué)者。我基本上想檢查是否已為單元測(cè)試目的調(diào)用了一個(gè)函數(shù)。這是代碼:type A struct { }func (a *A) Foo (){}type B struct {     a *A }func (b* B) Bar () {     a.Foo() }我基本上想檢查在調(diào)用 Bar 時(shí)是否確實(shí)調(diào)用了 Foo我知道有一些可用于 Golang 的模擬框架,但在測(cè)試現(xiàn)有結(jié)構(gòu)和結(jié)構(gòu)方法時(shí)它們非常復(fù)雜
查看完整描述

1 回答

?
烙印99

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

如果你想測(cè)試B,看看它是否真的調(diào)用了A的Foo函數(shù),你需要模擬出A對(duì)象。由于您要檢查的函數(shù)是Foo,只需創(chuàng)建一個(gè)僅包含該函數(shù)的簡(jiǎn)單Fooer接口(這就是您在 Go 中所稱(chēng)的函數(shù)加上 'er')。將 B 對(duì) A 的引用替換為對(duì) Fooer 的引用,就可以了。我在 Go Playground 上根據(jù)您的代碼創(chuàng)建了一個(gè)小示例:

package main


import "testing"


type A struct {

}


func (a *A) Foo() {}


type Fooer interface {

? ? Foo()

}


type B struct {

? ? a Fooer

}


func (b *B) Bar() {

? ? b.a.Foo()

}


func main() {

? ? var a A

? ? var b B

? ? b.a = &a

? ? b.Bar()

}


// in your test:


type mockFooer struct {

? ? fooCalls int

}


func (f *mockFooer) Foo() {

? ? f.fooCalls++

}


func Test(t *testing.T) {

? ? var mock mockFooer

? ? var bUnderTest B

? ? bUnderTest.a = &mock

? ? bUnderTest.Bar()

? ? if mock.fooCalls != 1 {

? ? ? ? t.Error("Foo not called")

? ? }

}


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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