这是一些伪代码,可以帮助您入门
describe 'I should get a challenge response when sending a request' do
socket = mock('UDPSocket').as_null_object
challenge_request = [0xFF, 0xFF, 0xFF, 0xFF, 0x57]
expected_response = [0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x4B, 0xA1, 0xD5, 0x22]
socket.should_receive(:send_request).with(challenge_request).and_respond_with(expected_response)
authentication_engine = new AuthenticationEngine(socket)
authentication_engine.issue_challenge_request
end
其要点是,您正在定义预期的请求和响应应该是什么,创建一个模拟 UDP 套接字,您可以将其注入任何将发送挑战并期望响应的内容,然后调用发出该挑战的功能。
authentication_engine应该知道它需要通过它的 发送一个质询请求,socket并且它需要从该套接字获得响应。
期望告诉 rspec的should_receive调用authentication_engine.issue_challenge_request应该导致套接字接收到send_request带有参数的方法的调用,challenge_request并且如果发生这种情况,它应该以预期的响应进行响应expected_response
这假设您以模块化方式编写代码,允许您以这种方式注入依赖项。
阅读一些关于您可用的各种 rspec 期望的教程可能对您有利。