首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec中的模拟TCPSocket

Rspec中的模拟TCPSocket
EN

Stack Overflow用户
提问于 2013-12-30 21:05:04
回答 1查看 2.2K关注 0票数 1

我有一个简单的方法,它连接到TCP服务器,放置单行字符串并关闭连接。连接关闭后,该方法重定向到特定页。

我对测试该方法的重定向感兴趣,并不关心TCP连接值。因此,我最好的选择是模拟连接。这是方法,

代码语言:javascript
复制
def print
  server = TCPSocket.new('a.b.c.d', 56423)
  server.puts "Hello Everyone"
  server.close

  redirect_to root_url
end

我的测试看上去像是,

代码语言:javascript
复制
it 'redirects to root_url' do
  get :print
  expect(response).to redirect_to(root_url))
end

我的问题是,我不知道如何模拟连接,这样我就可以到达重定向部分。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-30 21:45:50

有很多方法可以做到这一点,如https://www.relishapp.com/rspec/rspec-mocks/v/3-0/docs中所描述的。它们在语法和限制执行的程度上各不相同。

最允许的方法之一是在get调用之前包括以下内容:

代码语言:javascript
复制
server = double('server').as_null_object
TCPSocket.stub(:new).and_return(server)

这将允许/忽略传递给TCPSocket.new的任何参数,并忽略传递给该调用返回的对象的所有消息/参数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20847554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档