[rspec-users] Mocking Net::SSH connections
aslak.hellesoy at gmail.com
Mon Apr 21 03:18:11 EDT 2008
On Mon, Apr 21, 2008 at 8:03 AM, Jamie D <jam5t3r.lists at gmail.com> wrote:
> So I'm stuck again with creating a mock for Net::SSH, I've managed to
> mock the call to Net::SSH.start and yield the Net::SSH mock but I am
> totally stuck with mocking the session.shell.sync call and will also
> need to mock the shell.send_command call also. Any help much
Don't mock APIs you don't own. http://rubyurl.com/53Y6
Instead - create a thin API around such APIs and have your app use
that instead. Now you have an easily mockable API.
Also make sure you have end-to-end tests that use Net::SSH without any mocking.
> When I run the following spec I get the error:
> Mock 'Net::SSH' received unexpected message :shell with (no args)
> I've tried things like @shell = mock(Net::SSH::Service::Shell) but
> this also gives an error complaining that Service doe snot exist.
> # test code
> @connection = Ssh::Remote.new
> @ssh = mock(Net::SSH)
> # library code
> require 'net/ssh'
> module Ssh
> class Remote
> def remote_command(server, user, commands=)
> Net::SSH.start(server, user) do |session|
> shell = session.shell.sync
> commands.each do |command|
> out = shell.send_command command[:command]
> rspec-users mailing list
> rspec-users at rubyforge.org
More information about the rspec-users