2

TCPSockets(具体的にはIRCボット)を多用するアプリケーションを中心にテストを作成しようとしています。私のファーストクラスのテストを書いている間、私は次のことをやっていた。

#In the describe block
before(:all) { TCPServer.new 6667 }

...これにより、TCPSocketが(localhost:6667に接続することで)機能できるようになりましたが、実際には適切にモックされていません。ただし、同じポートにTCPServerを作成できないため、2番目のクラスに移動するときに問題が発生しました。

its(:socket) { should be_kind_of(TCPSocket) }#readlineや#writeなどの他の一般的な操作などをテストできるようにTCPSocketクラスをモックするにはどうすればよいですか?

4

2 に答える 2

3

beforeafterで TCPServer を追跡して閉じてみることができます。

before do
  @server = TCPServer.new 6667
end

after do
  @server.close
end

it ... do
end

it ... do
end

個々のテストのそれぞれの後、TCPServer は強制終了されるため、同じポートで新しいものを作成できます。

于 2013-01-28T23:02:57.260 に答える
0

あなたの問題を理解しているかどうかよくわかりませんが、ローカル マシンにある種の irc サーバーをインストールしてみませんか? ircd-irc2、ircd-hybrid などですか?

次のように irc クライアントを実装したとします。

class Bot
  attr_accessor :socket
  def initialize
    socket = TCPSocket.new("localhost", 6667)
  end
end

次に、このようにテストできます

let(:bot) { Bot.new }

it "should be kind of TCP Socket"
  bot.should be_kind_of(TCPSocket)
  bot.should be_a(TCPSocket)
end
于 2013-01-28T10:13:11.490 に答える