1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以重構(gòu)代碼的模式是創(chuàng)建一個(gè)Dialer接口。在您的代碼示例中,您使用返回ds的io.ReadWriteCloser. 所以你不需要實(shí)現(xiàn)整個(gè)net.Conn接口。就像net.Conn里面的讀寫方法一樣,一切正常
type Dialer interface{
Dial(network, address string) (io.ReadWriteCloser, error)
}
現(xiàn)在讓我們改變你的功能:
func handleConnection(us net.Conn, backend BA.Backend, d Dialer) {
// ...
// Code here stays
ds, err := d.Dial("tcp", backend.String());if err != nil {
log.Printf("failed to dial %s: %s", backend, err)
us.Close()
return
}
// ...
}
你的生產(chǎn)代碼可以工作,你現(xiàn)在需要定義一個(gè)netDialer包裝net.Dial()函數(shù)的類型。在您的測(cè)試中,您可以使用 atestDialer其中使用 a bytes.Buffer。
這回答了你的問(wèn)題:
無(wú)需輸入網(wǎng)絡(luò)撥號(hào)即可模擬網(wǎng)絡(luò)連接
- 1 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)