Intro
When working with async messaging, tests are more difficult. ffi-rzmq library is special because messages are received in a weird way:
receiver.recv_string(buffer = "")
The message payload is in the buffer variable, which is passed as a parameter.
To achieve testing I had to turn buffer to a instance variable (@buffer) and I resorted to the
mock results Arbitrary Handling
# e is a Emitter instance, my fictionary zeromq-based class
@endpoint.should_receive(:recv_string) do
e.instance_variable_set("@buffer", my_data)
end
@endpoint.should_receive(:recv_string) do
e.instance_variable_set("@buffer", "__END_OF_DATA__")
end
@endpoint is a mocked socket: when it receives the recv_string method, it replaces @buffer instance variable on e.
Please have a look at the
example code.
No comments:
Post a Comment