我试图围绕大量使用TCPSockets(具体来说是IRC bot)的应用程序编写测试。在编写第一个类的测试时,我一直在做以下事情:

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

...这允许我的TCPSockets运行(通过连接到localhost:6667),尽管实际上并没有对其进行适当的模拟。但是,由于无法在同一端口上创建TCPServer,因此这在移入第二类时引起了问题。

如何以一种允许我测试诸如its(:socket) { should be_kind_of(TCPSocket) }之类的东西以及其他诸如#readline和#write之类的常见操作的方式来模拟TCPSocket类?

最佳答案

您可以尝试在之前的中跟踪并关闭TCPServer,在之后:

before do
  @server = TCPServer.new 6667
end

after do
  @server.close
end

it ... do
end

it ... do
end

在每个单独的测试之后,TCPServer被终止,因此您可以使用相同的端口创建一个新的TCPServer。

关于ruby - 使用RSpec模拟TCPSocket,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14555249/

10-11 21:35