我有一个简单的方法,它连接到TCP服务器,放置单行字符串并关闭连接。连接关闭后,该方法重定向到特定页。
我对测试该方法的重定向感兴趣,并不关心TCP连接值。因此,我最好的选择是模拟连接。这是方法,
def print
server = TCPSocket.new('a.b.c.d', 56423)
server.puts "Hello Everyone"
server.close
redirect_to root_url
end我的测试看上去像是,
it 'redirects to root_url' do
get :print
expect(response).to redirect_to(root_url))
end我的问题是,我不知道如何模拟连接,这样我就可以到达重定向部分。有什么想法吗?
发布于 2013-12-30 21:45:50
有很多方法可以做到这一点,如https://www.relishapp.com/rspec/rspec-mocks/v/3-0/docs中所描述的。它们在语法和限制执行的程度上各不相同。
最允许的方法之一是在get调用之前包括以下内容:
server = double('server').as_null_object
TCPSocket.stub(:new).and_return(server)这将允许/忽略传递给TCPSocket.new的任何参数,并忽略传递给该调用返回的对象的所有消息/参数。
https://stackoverflow.com/questions/20847554
复制相似问题