簡體   English   中英

如何模擬傳出的Socket連接?

[英]How to mock an outgoing Socket connection?

在集成測試(JDK 6)中,我試圖捕獲所有傳出的TCP連接並模擬它們。 看起來我應該使用java.net.Socket#setSocketImplFactory()方法。 目前工作正常,但我無法理解如何獲得原始工廠的訪問權限,以便實例化原始JDK提供的SocketImpl類。 我之所以需要這個,主要是因為我想讓一些連接自由地出去,而不是嘲笑。 您能否就此問題提出一些手冊/指南/說明?

我會為Socket創建一個Socket服務,而不是模擬Socket。 這可以捕獲所有寫入的數據並以您希望的任何方式進行回復。 它可以在同一個測試中運行,也可以在同一個線程中運行。

根據javadoc,您應該能夠使用SocketFactory#getDefault()來獲取您的環境的默認SocketFactory。

順便說一句:您可能還想看看這個RFE / bug,它聲明SocketImplFactory基本上是一個死胡同: http ://bugs.sun.com/bugdatabase/view_bug.do?video_id = 4245730

查看Socket類的源代碼,沒有原始工廠 - 構造函數檢查factory是否為null,如果是, PlainSocketImpl()impl指定為新的PlainSocketImpl()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM