【问题标题】:Testing a real TCP Socket in Ruby在 Ruby 中测试一个真正的 TCP 套接字
【发布时间】:2016-03-19 21:55:01
【问题描述】:

我有一个程序通过机架劫持在套接字上运行。我想使用真正的 TCP 套接字测试该程序,我想接收它发送到套接字的内容并检查我是否得到正确的结果。

我该怎么做?我尝试使用 Socketpair:

@sender, @receiver = Socket.pair(:INET, :STREAM, 1024 * 256)`

然后

hijack_proc = h.fetch('rack.hijack')
hijack_proc.call(@sender)

但我得到的只是Protocol not supported - socketpair(2)

【问题讨论】:

    标签: ruby sockets testing tcp socketpair


    【解决方案1】:

    您在寻找Netcat 吗? 您应该能够在终端窗口中使用netcat -l 4444 之类的东西,并将4444 作为您的程序要连接的端口。 一旦您的程序向 Netcat 发送了一些内容,并且您在终端中看到了它,您就可以输入您的“响应”并按 Enter 将该文本发送回您的程序。

    【讨论】:

    • 不完全。我想从我的测试中读取写入套接字的内容(它是创建@sender 的测试)
    • 啊,我明白你的意思了。不过,检查写入 Socket 的内容对我来说似乎没有用,因为那将测试 Ruby 的套接字功能
    • 这可能会有所帮助:stackoverflow.com/questions/20847554/mock-tcpsocket-in-rspec ...您可以对空对象模拟设置您的期望:relishapp.com/rspec/rspec-mocks/v/2-6/docs/method-stubs/…
    • 我可以肯定地用一个模拟来测试这个,但我更多的是寻找真实的东西(因为我正在测试的库也使用像sendfile()这样的东西)
    猜你喜欢
    • 2012-05-25
    • 2013-05-10
    • 2011-01-31
    • 2023-03-19
    • 2017-03-06
    • 1970-01-01
    • 2015-06-15
    • 2015-12-15
    • 2015-10-30
    相关资源
    最近更新 更多