我试图围绕大量使用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/